SELECT NAME
, COUNT(*) AS TOT ,
COUNT(CASE WHEN MONTH(date) = 1 THEN 1 ELSE NULL END) AS [01] ,
COUNT(CASE WHEN MONTH(date) = 2 THEN 1 ELSE NULL END) AS [02] ,
COUNT(CASE WHEN MONTH(date) = 3 THEN 1 ELSE NULL END) AS [03] ,
COUNT(CASE WHEN MONTH(date) = 4 THEN 1 ELSE NULL END) AS [04] ,
COUNT(CASE WHEN MONTH(date) = 5 THEN 1 ELSE NULL END) AS [05] ,
COUNT(CASE WHEN MONTH(date) = 6 THEN 1 ELSE NULL END) AS [06] ,
COUNT(CASE WHEN MONTH(date) = 7 THEN 1 ELSE NULL END) AS [07] ,
COUNT(CASE WHEN MONTH(date) = 8 THEN 1 ELSE NULL END) AS [08] ,
COUNT(CASE WHEN MONTH(date) = 9 THEN 1 ELSE NULL END) AS [09] ,
COUNT(CASE WHEN MONTH(date) = 10 THEN 1 ELSE NULL END) AS [10] ,
COUNT(CASE WHEN MONTH(date) = 11 THEN 1 ELSE NULL END) AS [11] ,
COUNT(CASE WHEN MONTH(date) = 12 THEN 1 ELSE NULL END) AS [12]
FROM Test A LEFT JOIN TTest B ON a.Name_CC = B.NAME_CC
GROUP BY NAME;
월별로 합계 쿼리를 짰는데요
인터넷을 보고 짠거라... case 문에서 then 1 에 의미가 궁금해서요
보통 then 에서는 true 일때 저 값이 나오는건데 1 로 했는데 월별로 합계 값이 나오더라고
의미 좀 알려주세요~
SELECT COUNT(1) FROM DUAL; SELECT COUNT(1.1111) FROM DUAL; SELECT COUNT('A') FROM DUAL; SELECT COUNT('rrrrrr') FROM DUAL; SELECT COUNT(dummy) FROM DUAL; 위 5가지는 모두 같은 결과(=1)가 나오네요. count()안에 값을 상수로 하건, 컬럼명으로 하건 동일 합니다. count()는 건수를 세는 함수죠. 1이라는 숫자를 세건, 컬럼명을 세건 동일한 값이라는 거죠. 그래서, 보통 sql을 작성할때 컬럼명보단, 숫자를 많이 사용들 합니다. 왜냐면 시각적으로 식별하기 쉬워서죠.