私は金融分野に取り組んでいます。だから私は4月から5月までのデータが欲しいです。
今月が6月であるとすると、今年の4月から6月だけが必要であり、年と月でグループ化する必要があります。
そして、今月が2月だとすると、去年の4月から1月、つまり2013年4月から2014年1月までの詳細が必要です。
私はこれのためにCTE式を書きました私は部分的な結果を得ました私は私が間違っているか正しいことをしているのか分かりません
declare @Month int
declare @Year int ;
set @Month = 4;
set @Year = YEAR(GETDATE());
if (@Month <= MONTH(GETDATE()))
with cte as
(
SELECT N = 4, YYY = YEAR(GETDATE())
UNION ALL
SELECT N + 1, YYY
FROM cte
WHERE N+1 <= MONTH(GETDATE())
)
select N, YYY from cte
else
with cte as
(
SELECT N = 4 , YYYY = YEAR(GETDATE() - 1)
UNION ALL
SELECT N + 1,YYYY
FROM cte
WHERE N+1 <= 12
)
select N, YYYY from cte
このようなO / Pが欲しい
現在の月が4月より大きい場合、またはより具体的には、現在の月が6月であると仮定します。
April 2014
May 2014
June 2014
今月が2014年2月の場合、
April 2013
May 2013
June 2013
July 2013
Aug 2013
Sep 2013
Oct 2013
Nov 2013
Dec 2013
Jan 2014
Feb 2014
ありがとうございました。
DECLARE @CurrentDate AS datetime = '20150212';
DECLARE @FirstDayInCurrentMonth AS datetime = DATEADD(day, 1 - DATEPART(day, @CurrentDate), @CurrentDate);
DECLARE @LastApril AS datetime = DATEADD(month, -(DATEPART(month, @FirstDayInCurrentMonth) + 8) % 12, @FirstDayInCurrentMonth);
WITH Periods AS (
SELECT @LastApril AS [Period]
UNION ALL
SELECT DATEADD(month, 1, [Period])
FROM Periods
WHERE [Period] < @FirstDayInCurrentMonth
)
SELECT DATENAME(month, [Period])
,DATEPART(year, [Period])
FROM Periods
これは、4月の数日間は4月のみを返すことに注意してください。4月の数日間に1か月または13か月が必要かどうかは、質問からは明らかではありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加