SQL Server / 제어문 / CASE
CASE 함수는 데이터의 값에 따라 특정 값을 부여할 때 사용한다. CASE로 시작하여 END로 끝나고, 조건은 WHEN, 부여할 값은 THEN으로 정의한다.
예를 들어 다음과 같은 점수 데이터가 있다고 하자.
20점 이하는 E, 20점 초과 40점 이하는 D, 40점 초과 60점 이하는 C, 60점 초과 80점 이하는 B, 80점 초과 100점 이하는 A를 주고 싶다면 다음과 같이 쿼리한다.
select point, case when point <= 20 then 'E' when point <= 40 then 'D' when point <= 60 then 'C' when point <= 80 then 'B' when point <= 100 then 'A' end as grade from tb_01 ;
주의할 점은 한 번 조건에 해당하면 그 다음 조건은 보지 않는 다는 것이다. 즉, 10점은 20점 이하이므로 E가 부여된 후, 40점 이하 조건에도 부합하지만 D가 되지 않는다. 따라서 순서가 중요하다. 만약 아래처럼 한다면 모두 A가 된다.
select point, case when point <= 100 then 'A' when point <= 80 then 'B' when point <= 60 then 'C' when point <= 40 then 'D' when point <= 20 then 'E' end as grade from tb_01 ;
순서를 신경쓰는 게 싫다면 아래처럼 쿼리할 수도 있다.
select point, case when ( point > 81 and point <= 100 ) then 'A' when ( point > 61 and point <= 80 ) then 'B' when ( point > 41 and point <= 60 ) then 'C' when ( point > 21 and point <= 40 ) then 'D' when ( point >= 0 and point <= 20 ) then 'E' end as grade from tb_01 ;