개요
MSSQL GENERATE_SERIES 는 일련의 숫자를 지정된 간격으로 생성하되, 계열 값 사이의 간격과 단계는 사용자가 정의할 수 있는 연산자입니다. 호환성수준 160 즉 SQL Server 2022 버전부터 사용가능합니다.
그 이전버전에서는 master..spt_values 를 비슷하게 활용할 수 있는데, 최대 2047까지만 사용할 수 있어서, 2022 버전을 쓴다면 Generate_series 를 사용하는 것이 편하다
MSSQL Generate_series 기본 구문
GENERATE_SERIES ( start , stop [ , step ] )
기본 예제
-- 1씩 증가 ( 1은 기본값임. 생략가능 )
SELECT * FROM generate_series(1, 10)
-- 0.1 씩 증가 ( 인수들이 모두 같은 형식이어야 함)
SELECT * FROM generate_series(1.0, 2.0, 0.2)
-- 1씩 감소
SELECT * FROM generate_series(10, 1, -1)

달력 만들기 예제
-- 2024.01.01 ~ 2024.12.31
SELECT MM, [1], [2], [3], [4], [5], [6], [7]
FROM (
SELECT DATEPART(WEEKDAY, DT) AS WD
, DATEPART(WEEK, DT) AS WD2
, DATEPART(MONTH, DT ) AS MM -- 월별 구분 기능
, DATEPART(DAY,DT) AS DT
FROM (
SELECT DATEADD(DAY, VALUE, '2024-01-01') AS DT
FROM generate_series(0, DATEDIFF(DAY, '2024-01-01', '2024-12-31'))
) X
) A
PIVOT (
MAX(DT) FOR WD IN ( [1], [2], [3], [4], [5], [6], [7])
) P
