2017-04-02 44 views
1

我有表名爲奧普表如何在另一列獲得下一行值


OppID   actualclosedate 
-------------------------------------- 
    1   10-March   

我有一個名爲stagechange

-------------------------------------- 
    OppID  Stage  createdon 
-------------------------------------- 
    1   Propsect 1-Jan   
    1   Qualify  15-Jan  
    1   Develop  25-Jan  
    1   Qualify  9-Feb  
    1   Develop  7-March  
    1   Prospect 9-April 

如何創建一個新的列表和獲取createon列中的下一行值;有這樣的事情。如果沒有更多的下一個值,我們從其他的表像奧普表實際結束日期日期

-------------------------------------- 
    OppID  Stage  createdon newcolumn 
-------------------------------------- 
    1   Propsect 1-Jan  15-Jan 
    1   Qualify  15-Jan  25-Jan 
    1   Develop  25-Jan  9-Feb  
    1   Qualify  9-Feb  7-March  
    1   Develop  7-March  9-April 
    1   Prospect 9-April  10-March ----(actualclosedate) 
+0

什麼是'createdon'列的類型? – GurV

+1

請標記您正在使用的數據庫。 –

+0

提示:使用適當的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。 – HABO

回答

0

這將替換actualclosedate

Select A.* 
     ,NewColumn = IsNull(Lead(creaton) over (Partition By A.OppID Order By A.CreateOn),B.actualclosedate) 
From stagechange A 
Join Opp   B on A.OppID=B.OppID 
1

假設createdOn存儲爲一個有效的日期/時間類型和下次通過此意味着未來列,就用lead()

這是假設(儘管在這個問題沒有明確說明)所需的下一個日期OppId

lead()是大多數(但不是全部)數據庫中的ANSI標準功能。

相關問題