CASE 조건식 - Amazon Redshift

CASE 조건식

CASE 표현식은 다른 언어에서 발견되는 if/then/else 문과 비슷한 조건 표현식입니다. CASE는 다수의 조건이 있을 때 결과를 지정하는 데 사용됩니다. SELECT 명령과 같이 SQL 표현식이 유효한 경우 CASE를 사용합니다.

CASE 표현식은 단순(simple)과 검색(searched), 두 가지 유형이 있습니다.

  • 단순 CASE 표현식에서는 표현식과 값을 비교합니다. 이때 일치하는 부분이 발견되면 THEN 절에서 지정된 작업이 적용됩니다. 일치하는 부분이 발견되지 않으면 ELSE 절에서 지정된 작업이 적용됩니다.

  • 검색 CASE 표현식에서는 각 CASE가 부울 표현식에 따라 평가되고, CASE 문이 처음 일치하는 CASE를 반환합니다. WHEN 절 사이에서 일치하는 부분이 발견되지 않으면 ELSE 절의 작업이 반환됩니다.

구문

다음은 조건을 일치시키는 데 사용되는 단순 CASE 문입니다.

CASE expression WHEN value THEN result [WHEN...] [ELSE result] END

다음은 각 조건을 평가하는 데 사용되는 검색 CASE 문입니다.

CASE WHEN condition THEN result [WHEN ...] [ELSE result] END

인수

expression

열 이름 또는 유효한 표현식입니다.

USD 상당

숫자 상수나 문자열 같이 표현식과 함께 비교하는 값입니다.

result

표현식 또는 부울 조건을 평가할 때 반환되는 대상 값 또는 표현식입니다. 모든 결과 표현식의 데이터 형식은 단일 출력 형식으로 변환할 수 있어야 합니다.

condition

true 또는 false로 평가되는 부울 표현식 condition이 true이면 CASE 표현식의 값은 조건 다음에 오는 결과이며 나머지 CASE 표현식은 처리되지 않습니다. condition이 false이면 이후의 모든 WHEN 절이 평가됩니다. WHEN condition 결과가 true가 아닌 경우 CASE 표현식의 값은 ELSE 절의 결과입니다. ELSE 절을 생략한 상태에서 condition이 true가 아닌 경우 NULL 값이 결과로 반환됩니다.

예제

다음 예시에서는 샘플 TICKIT 데이터의 VENUE 테이블과 SALES 테이블을 사용합니다. 자세한 내용은 샘플 데이터베이스 단원을 참조하십시오.

VENUE 테이블에 대한 쿼리에서 단순 CASE 표현식을 사용하여 New York CityBig Apple로 변경합니다. 그 밖의 도시 이름은 모두 other로 변경합니다.

select venuecity, case venuecity when 'New York City' then 'Big Apple' else 'other' end from venue order by venueid desc; venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...

검색 CASE 표현식을 사용하여 개별 티켓 판매에 대한 PRICEPAID 값을 기준으로 그룹 번호를 할당합니다.

select pricepaid, case when pricepaid <10000 then 'group 1' when pricepaid >10000 then 'group 2' else 'group 3' end from sales order by 1 desc; pricepaid | case ----------+--------- 12624 | group 2 10000 | group 3 10000 | group 3 9996 | group 1 9988 | group 1 ...