WEB/MSSQL

[MSSQL] 두 날짜사이에 날짜별 통계 쿼리

인생시계 2020. 12. 18. 14:26

[MSSQL] 두 날짜사이에 날짜별 통계 쿼리

GROUP BY를 이용하여 날짜별로 합(SUM)한 결과 출력

 

WITH A AS (
SELECT '20201125' AS STT_DT
           , '20201225' AS END_DT
), B AS (
SELECT CONVERT(NVARCHAR(8), CONVERT(datetime, (SELECT STT_DT FROM A)), 112) AS [DT]
 UNION ALL
SELECT CONVERT(NVARCHAR(8),DATEADD(D,1,DT),112) AS [DT]
  FROM B
 WHERE 1=1
      AND dt >= (SELECT STT_DT FROM A)
      AND dt <= (SELECT END_DT FROM A)
), C AS (
                     SELECT '20201125' AS [DT], 150 AS [SAL]
 UNION ALL SELECT '20201125' AS [DT], 150 AS [SAL]
 UNION ALL SELECT '20201125' AS [DT], 100 AS [SAL]
 UNION ALL SELECT '20201126' AS [DT], 400 AS [SAL]
 UNION ALL SELECT '20201126' AS [DT], 100 AS [SAL]
 UNION ALL SELECT '20201128' AS [DT], 100 AS [SAL]
 UNION ALL SELECT '20201128' AS [DT], 350 AS [SAL]
)

 

SELECT TA.DT                               AS DT

          ,  ISNULL(SUM(TB.SAL), 0) AS SAL

  FROM B TA

     LEFT  OUTER

     JOIN C TB

       ON TA.DT = TB.DT

GROUP 

        BY TA.DT

 

위의 실행 쿼리 결과