年パラメータが入力されたときに今年のすべての月を表示する必要があるという要件があります。年を入力して今月までのリストを取得するSQLクエリ
たとえば、2016と入力すると、9月までの月がすべて表示されます。
これを行うには?どんなアイデアも高く評価されます。
年パラメータが入力されたときに今年のすべての月を表示する必要があるという要件があります。年を入力して今月までのリストを取得するSQLクエリ
たとえば、2016と入力すると、9月までの月がすべて表示されます。
これを行うには?どんなアイデアも高く評価されます。
以下のスクリプトを使用してください。
;with months (date)
AS
(
SELECT cast(@year+'-01-01' as date)
UNION ALL
SELECT DATEADD(month,1,date)
from months
where DATEADD(month,1,date)<= case when @year=YEAR(getdate()) THEN CAST(getdate() as date) ELSE cast(@year+'-12-31' as date) END
)
select Datename(month,date) [Month] from months
出力:
ありがとうございました:) –
しかし、パラメータとして2015が与えられたらどうなりますか? 2015年から2016年までのすべての月が引き続き表示されます。これを制限する方法は? –
それはあなたが望んでいたものです..右? –
これは再帰CTEと簡単です:
with m as (
select datefromparts(year(getdate()), 1, 1) as mm
union all
select dateadd(month, 1, m.mm)
from m
where m.mm < getdate()
)
select m.*
from mm;
パラメータが何に使用されるか私には不明です。これは今年から数ヶ月を得ます。
「オペランドタイプのクラッシュ:日付がintと互換性がありません」というメッセージが表示されます。試してみると – GuidoG
@GuidoGです。 。 。ああ。これは 'where'節の条件になります。 –
私はパラメータがために使用されているもの得ることはありません。あなたの説明は、今年から数ヶ月を取得するように思われる。 –