月と年のフィールドのみをintとして含むテーブルがあります。入力が与えられた場合、月、6か月と言います。6か月前のデータを投影する必要があります。
たとえば、2001年の第1回ジャナリーから現在までのデータがあります。入力を6か月とすると、結果を取得するには、現在の日付から6か月前に戻る必要があります。
出力は2001年1月から2012年1月までのデータになります。
私は正しい、部分文字列、文字列の比較を使用してプログラムを実行しました(厄介なハック)
そうするための顕著な方法はありますか?
DDL
Declare @t table (Mnth int, Yr int)
Insert Into @t
-- 2011
Select 1,2011 Union All select 2,2011 Union All Select 3, 2011 Union ALL Select 4,2011 Union ALL
Select 5,2011 Union All select 6,2011 Union All Select 7, 2011 Union ALL Select 8,2011 Union ALL
Select 9,2011 Union All select 10,2011 Union All Select 11, 2011 Union ALL Select 12,2011 Union ALL
--2012
Select 1,2012 Union All select 2,2012 Union All Select 3, 2012 Union ALL Select 4,2012 Union ALL
Select 5,2012 Union All select 6,2012 Union All Select 7, 2012 Union ALL Select 8,2012 Union ALL
Select 9,2012 Union All select 10,2012 Union All Select 11, 2012 Union ALL Select 12,2012
Declare @inputMonth int = 6
文字列変換なしで試しています
Select Mnth,Yr,YEAR(DATEADD(mm,-@inputMonth,getdate())),MONTH(DATEADD(mm,-@inputMonth,getdate()))
From @t
WHERE YEAR(DATEADD(mm,-@inputMonth,getdate())) < Yr
AND MONTH(DATEADD(mm,-@inputMonth,getdate())) < Mnth
しかし、それは機能していません
ありがとう