0

我有多个 CTE,我想从其中几个中检索一些信息到下一个 CTE。

因此,我从其中一个 CTE 获得了以下信息:

PeriodID  StarDate
1         2006-01-01
2         2007-04-25
3         2008-08-16
4         2009-12-08
5         2011-04-017

这来自其他:

RecordID  Date
100       2007-04-15
101       2008-05-21
102       2008-06-06
103       2008-07-01
104       2009-11-12

我需要在下一个展示:

RecordID  Date        PeriodID
100       2007-04-15  1
101       2008-05-21  2
102       2008-06-06  2
103       2008-07-01  2
104       2009-11-12  3

我可以使用一些 case/when 语句来定义记录日期是否在周期 1、2、3、4 或 5 中,但在某些情况下,我可以从第一个 CTE 返回不同数量的周期。

有没有办法在上述情况下做到这一点?

4

1 回答 1

1

您可以定义多个 CTE,如下所示,然后像处理任何其他表一样从它们中选择并连接它们。

with cte1 as (select * ...),
cte2 as (select * ...)
    select 
        cte2.*, 
        periodid 
    from cte2
cross apply 
        (select top 1 * from cte1 where cte2.recorddate> cte1.startdate order by startdate desc) v
于 2012-10-22T10:34:14.347 回答