我正在尝试构建一个 CTE 来给我一个开始日期之间天数的日历,GETDATE()
即星期一、星期二、星期三等的数量。
我有一个 case 语句,其中包含在日历计数完成之前需要满足的条件
如果是 1 2 或 3,我的有效开始日期将使用 Date-Add 将天数添加到它,并且应该连续执行此操作直到GETDATE()
.
我知道我需要使用枢轴,但似乎很难让枢轴与 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
任何帮助都会很棒,因为我很欣赏这很复杂