CTE を構築して、開始日とGETDATE()
月曜日、火曜日、水曜日などの間の日数のカレンダーを作成しようとしています。
カレンダーのカウントが完了する前に満たす必要がある条件を含むケース ステートメントがあります。
有効開始日が 1 2 または 3 の場合、Date-Add を使用して日数を追加し、これを まで継続して行う必要がありますGETDATE()
。
ピボットを使用する必要があることはわかっていますが、PIVOT を CTE と連携させるのに苦労しているようです。
WITH CTE
AS (
select MR.ContractId B2,Name A1, EffectiveStartDate A ,swd2.Id B
FROM [VES.DES].dbo.MasterRound mr LEFT JOIN [VES.DES].dbo.ScheduledWeekDay swd2
ON MR.RoundRecurrenceId = SWd2.Id
UNION ALL
SELECT
B2,A1,
CASE
When B = 2 Then DATEADD(D,+7,A)
When B = 1 Then DATEADD(D,+1,A)
When B = 3 Then DATEADD(D,+14,A) END AS A, B
FROM CTE WHERE A < GETDATE())
SELECT * FROM CTE
WHERE CTE.B2 = '12'
AND DATEPART(m, A) = DATEPART(m, DATEADD(m, -1, getdate()))
option (maxrecursion 0)
最終的に欲しい出力は
NAME(A1), Month, MON, Tues, WED, Thu, Fri, Sat, Sun
---------------------------------------------------
FW1 JAN 4 3 4 5 3 4 2
FW3 FEB 4 5 4 4 4 4 5
これは非常に複雑であることを理解していますので、どんな助けも素晴らしいでしょう