이 내 달력 테이블을 사용 쉬울 것입니다, 당신 달력 테이블에 week no
를 추가 할 수 있습니다 나는 당신이 당신의 일부를 올리기 전에 일하기 시작했다.
내가 알아챈 한 가지는 "다음 주 영업일"이지만 20171225
- 20171229
이 맞습니까? 25 일은 크리스마스입니다 (많은 곳에서 그 날을 비즈니스 데이로 간주하지는 않습니다).
어떤 방법, 당신은 당신의 달력 테이블 편집해야하지만이 작동하는지 알려 드리겠습니다 :
DECLARE @Date Date = '20171221'
SELECT TOP 1
FIRST_VALUE([date]) OVER (ORDER BY DD.[Working Day] DESC, DD.Date) AS NextWorkingDay,
FIRST_VALUE([date]) OVER (ORDER BY CASE [Day Name] WHEN 'Saturday' THEN 0 ELSE 1 END ASC, DD.Date) AS WeekendStart,
DATEADD(DAY, 1,FIRST_VALUE([date]) OVER (ORDER BY CASE [Day Name] WHEN 'Saturday' THEN 0 ELSE 1 END ASC, DD.Date)) AS WeekendEnd,
FIRST_VALUE([date]) OVER (ORDER BY CASE [Day Name] WHEN 'Monday' THEN 0 ELSE 1 END ASC, DD.Date) AS NextWeekStart,
DATEADD(DAY, 4,FIRST_VALUE([date]) OVER (ORDER BY CASE [Day Name] WHEN 'Monday' THEN 0 ELSE 1 END ASC, DD.Date)) AS NextWeekEnd,
DATEADD(Day, 1, @Date) AS EndStart,
DATEADD(DAY, -1, (DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date)+1, 0))) AS MonthEnd
FROM DimDate DD
WHERE DD.Date > @Date;
당신이 당신의 달력 표에서 일 이름이없는 알 수 있습니다. 나는 이것을 추가하는 것이 좋습니다. 그렇지 않으면 내 참조를 [Day Name]
~ DATENAME(WEEKDAY,[Date])
으로 변경해야 성능이 저하됩니다.
캘린더 테이블은 매우 쉬워야합니다. 캘린더 테이블의 모습을 보여줄 수 있습니까? – Squirrel
어떤 SQL Server 버전을 사용하고 있습니까? ['EOMONTH'] (https://docs.microsoft.com/en-us/sql/t-sql/functions/eomonth-transact-sql)와 같은 기능이 유용 할 수 있습니다. – HABO
캘린더 테이블이 어떻게 보이는지 편집했습니다. 저는 SQL Server 2016에 있습니다. –