내가 나에게 월요일, 화요일, 수요일의 수, 즉 시작 날짜와 GETDATE()
사이의 일의 일정을 제공하기 위해 CTE 구축을 위해 노력하고의 캘린더를 만들SQL 사용 CTE 및 PIVOT 등, 달
캘린더 카운트가 완료되기 전에 충족되어야하는 조건이있는 케이스 성명서를 가지고 있습니다.
유효한 시작 날짜가 1 2 또는 3 인 경우 날짜 - 추가를 사용하여 일수를 더하고이를 수행해야합니다. 계속 GETDATE()
까지 내가 피벗을 사용할 필요하지만 CTE와 함께 작동하도록 PIVOT을 받고 문제가 많이있을 것 같다 알고
,
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의 첫 번째 부분에서 모든 것을하고 두 번째 부분에서 모든 것을 선택하는 것 같습니다. 같은 결합을 반복하면서 복잡한 결합을 만듭니다. 두 번째 부분에서 조인을 수행하면 한 번만 수행하면됩니다. – Wietze314
팁을 주셔서 감사합니다 지금은 그 시도, – user2040295
고마워 Wietze 내가 당신의 의견을 기반으로 나에게 동일한 결과를 제공해야 완전히 다른 쿼리를 만들었지 만, 지금은 피벗에 갇혀 그래서 당신이 우리를 도울 수 있다면 대단히 감사하겠습니다. – user2040295