我想建立一個CTE給我的開始日期和GETDATE()
即星期一,星期二,星期三的數量之間的天日曆日曆等SQL使用CTE和樞軸,使月
我有有需要之前日曆計數得到滿足,如果是1 2或3將使用日期添加天數增加它能夠完成
我的有效起始日期條件和應該做這樣的case語句一直持續到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
任何幫助將是偉大的,因爲我明白這是相當複雜
你爲什麼不建立一個CTE壓延榜第一,並使用該表中更加複雜的部分。我沒有完全學習你的語法,但看起來你正在做CTE第一部分的所有事情,然後在第二部分中選擇所有的東西。這使得它成爲一個複雜的聯盟,並重復相同的聯合。如果你在第二部分進行加入,你只需要做一次。 – Wietze314
感謝您的提示,我將現在嘗試, – user2040295
謝謝Wietze我根據您的評論創建了一個完全不同的查詢應該給我相同的結果,但是我現在卡在樞軸上,所以如果你能幫助我們與這將不勝感激。 – user2040295