2012-10-22 57 views
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返回租期數。

有沒有辦法在上述背景下做到這一點?

回答

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 
+0

有些日期是「剪切」但交叉適用聲明。任何想法爲什麼? – gotqn

+0

這是感嘆「>」的結果。我改變了「> =」,現在好了。謝謝您的幫助。 – gotqn