SQL - 每年定期休假

SQL - recurring holiday period on a yearly basis

我的国家每年都有特定的假期,持续 46 天。 我正在编写一个代码,该代码将 return 每年该假期的日期范围。

起点是 'easter' 的开始,我从中减去 46 天。

目前代码只允许我区分一年的期望期

SELECT * FROM TIME_DIM 

WHERE DATE BETWEEN (SELECT TOP 1 DATEADD(day, -46, DATE) as DATE FROM TIME_DIM 
                    WHERE HOLIDAY = 'EASTER' ORDER BY DATE) 
               AND (SELECT TOP 1 DATE FROM TIME_DIM 
                    WHERE HOLIDAY = 'EASTER' ORDER BY DATE ORDER BY DATA)

ORDER BY DATA

像这样的东西应该有用。

With HolidayCte as (
Select Year,  date as 'Easter',Dateadd(dd,-46,date) as HolidayStarts
from Time_Dim
Where td.Holiday = 'Easter'
)

Select td.*
from Time_Dim td
join HolidayCte hc on hc.Year = td.year and td.Date between hc.HolidayStarts and hc.Easter 

'Join between' 也成功了:

`SELECT B.DATE AS DATE 
FROM TIME_DIM A 

JOIN TIME_DIM B 
    ON B.DATE BETWEEN DATEADD(day, -46, A.DATE) AND DATEADD(day, -1,A.DATA)

WHERE A.HOLIDAY_NAME = 'Easter'
ORDER BY B.DATA`