2 つの日付の間の月のリストを生成し、 SQL Server 2012で得た年ごとに結果を繰り返す必要があります。
次に例を示します。
- 開始日 = 2010-11-01
- 終了日 = 2011-01-01
- 基準年 = 2008
私が望む結果:
StatDate StatYearGroup
--------------------------
2007-11-01 2008
2007-12-01 2008
2008-01-01 2008
2008-11-01 2009
2008-12-01 2009
2009-01-01 2009
2009-11-01 2010
2009-12-01 2010
2010-01-01 2010
2010-11-01 2011
2010-12-01 2011
2011-01-01 2011
そのクエリを使用して 2 つの日付の間の月のリストを生成できますが、@endDate と @referenceYear の間で毎年結果を繰り返すにはどうすればよいですか? また、StatYearGroup の値を取得するにはどうすればよいですか?
declare @startDate date = '2010-11-01';
declare @endDate date = '2011-01-01';
declare @referenceYear int = 2008;
with dateRange(StatDate) as
(
select @startDate
union all
select dateadd(month, 1, StatDate)
from dateRange
where StatDate < @endDate
)
select StatDate
from dateRange