CASE
CASE
CASE
WHEN 조건 1 THEN 값 1
/*
WHEN 조건 2 THEN 값 2
...
WHEN 조건 N THEN 값 N
*/
ELSE 값
END
- 피벗 테이블 형태로도 사용할 수 있다.
- 조건에 따라 다른 컬럼으로 집계할 때 사용
- 주로 집계 함수와 함께 사용
SELECT 집계함수(CASE WHEN 조건 1 THEN 값 1 ELSE NULL END)
/*
, 집계함수(CASE WHEN 조건 2 THEN 값 2 ELSE NULL END)
...
, 집계함수(CASE WHEN 조건 N THEN 값 N ELSE NULL END)
*/
FROM 테이블명;
HackerRank & LeetCode
SELECT CASE
WHEN (A + B <= C) OR (A + C <= B) OR (B + C <= A) THEN 'Not A Triangle'
WHEN (A = B) AND (A = C) THEN 'Equilateral'
WHEN (A = B) OR (A = C) OR (B = C) THEN 'Isosceles'
ELSE 'Scalene'
END
FROM triangles;
SELECT id
, SUM(CASE WHEN month = 'Jan' THEN revenue ELSE NULL END) AS 'Jan_Revenue'
, SUM(CASE WHEN month = 'Feb' THEN revenue ELSE NULL END) AS 'Feb_Revenue'
, SUM(CASE WHEN month = 'Mar' THEN revenue ELSE NULL END) AS 'Mar_Revenue'
, SUM(CASE WHEN month = 'Apr' THEN revenue ELSE NULL END) AS 'Apr_Revenue'
, SUM(CASE WHEN month = 'May' THEN revenue ELSE NULL END) AS 'May_Revenue'
, SUM(CASE WHEN month = 'Jun' THEN revenue ELSE NULL END) AS 'Jun_Revenue'
, SUM(CASE WHEN month = 'Jul' THEN revenue ELSE NULL END) AS 'Jul_Revenue'
, SUM(CASE WHEN month = 'Aug' THEN revenue ELSE NULL END) AS 'Aug_Revenue'
, SUM(CASE WHEN month = 'Sep' THEN revenue ELSE NULL END) AS 'Sep_Revenue'
, SUM(CASE WHEN month = 'Oct' THEN revenue ELSE NULL END) AS 'Oct_Revenue'
, SUM(CASE WHEN month = 'Nov' THEN revenue ELSE NULL END) AS 'Nov_Revenue'
, SUM(CASE WHEN month = 'Dec' THEN revenue ELSE NULL END) AS 'Dec_Revenue'
FROM Department
GROUP BY id;