基于范围的T-SQL创建指标

时间:2018-04-23 16:20:16

标签: tsql recursion subquery

我有一个设置三列的表:

EventName    |    StartDate    |    EndDate
FunRun            1/1/2018          1/10/2018
DumbRun           2/1/2018          2/5/2018

我有一个单独的日期表,其中包含一年中的每个日期,大约有100个不同的属性。

CalendarDate |    DayOfWeek    |    WeekendInd    |    etc...
1/1/2018          Sunday            1
1/2/2018          Monday            0
1/15/2018         Wednesday         0

如果日历日期在偶数表上的日期之间,我想加入这两个表来创建指标。

CalendarDate |    DayOfWeek    |    WeekendInd    |    EventInd
1/1/2018          Sunday            1                  1
1/2/2018          Monday            0                  1
1/15/2018         Wednesday         0                  0

我似乎无法在子查询中使用递归CTE。此表已连接到其他5个子查询。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

据我所知,你不需要递归,只需加入2个表

select
    CalendarDate, DayOfWeek, WeekendInd, EventInd = isnull(EventInd, 0)
from
    CalendarTable a
    outer apply (
        select
            distinct EventInd = 1
        from
            EventsTable b
        where
            a.CalendarDate between b.StartDate and b.EndDate
    ) q