월별 통계에 대해서 질문있습니다. 0 1 741

by 상똥이 [SQLServer] [2020.05.07 16:18:53]


안녕하세요.

현재 월별 통계 쿼리를 작성하고 있습니다.

제가 작성한 쿼리를 호출하면 4월에만 데이터가 있기 때문에

4월것만 나옵니다.

제가 원하는 것은 1~12월에 값이 없을 경우에는 0을 넣어서 통계가 나오게 만들고 싶습니다. (아래표처럼 만들고 싶습니다.)

답변해주시면 정말 감사하겠습니다.

 

1월 0
2월 0
3월 0
4월 2
5월 0
6월 0
7월 0
8월 0
9월 0
10월 0
11월 0
12월 0

SELECT
     DATEPART(MONTH, CreatedDate) AS MONTH
    ,COUNT(*) AS VAL
FROM DrainageWater
WHERE CreatedDate >='2020-01-01' 
AND CreatedDate <= '2020-12-31'
GROUP BY DATEPART(MONTH, CreatedDate)

by 마농 [2020.05.07 17:17:51]
WITH month_t AS
(
SELECT 1 mm
 UNION ALL
SELECT mm + 1 mm
  FROM month_t
 WHERE mm < 12
)
--, DrainageWater AS
--(
--SELECT '2020-04-01' CreatedDate
--UNION ALL SELECT '2020-04-02'
--)
SELECT a.mm
     , ISNULL(b.cnt, 0) cnt
  FROM month_t a
  LEFT OUTER JOIN
       (SELECT DATEPART(MONTH, CreatedDate) mm
             , COUNT(*) cnt
          FROM DrainageWater
         WHERE CreatedDate >= '2020-01-01' 
           AND CreatedDate <  '2021-01-01'
         GROUP BY DATEPART(MONTH, CreatedDate)
        ) b
	ON a.mm = b.mm
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입