SQL:歯抜けデータを補完するための連番データyyyyMMを取得する

--先月から1年分のカレンダーデータを取得する
DECLARE @from年月 date = dateadd(month,-12, GETDATE())
	,@to年月 date = dateadd(month,-1, GETDATE());

SELECT  convert(int,format(DATEADD(DAY, nbr - 1, @from年月),'yyyyMM')) AS 年月
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @from年月, @to年月)
GROUP BY format(DATEADD(DAY, nbr - 1, @from年月),'yyyyMM') --日別データが取得されるのでグループ化している

日付データが取得できたら、CROSS JOIN や LEFT OUTER JOIN、UNION ALLなどで補完します。

SQL
AD
味方出版