【问题标题】:T-SQL Create Indicator Based on RangesT-SQL 根据范围创建指标
【发布时间】:2018-04-23 16:20:15
【问题描述】:

我有一个设置了三列的表:

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 个其他子查询。有什么建议吗?

【问题讨论】:

    标签: tsql recursion subquery


    【解决方案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
    

    【讨论】:

    • 这是完美的解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多