2015-12-15 69 views
0

這是我的表:下一行的數據添加到一個新的列在同一個表

enter image description here

我想更新列Closed_dateAddr= OfficeClosed_timeClosed_time作爲下一行Update_dateUpdate_time

輸出應該是:

enter image description here

我一直與行ID嘗試了獨特的身份與case表達:

Declare @maxRow int 
Select @maxrow= max(ID) from Info 

Declare @ID int=1 
While(@ID <= @maxRow) 
Begin 
    Declare @Name varchar(10), @Addr varchar(10), @Update_date datetime, @Update_time varchar(10), @Closed_date datetime, @Closed_time varchar(10) 

    Select @Addr = Case when Inf.Addr = 'Office' then ((Select Update_date from Info where [email protected]+1) as @Closed_date) else Inf.Name end 
+0

請標記使用的dbms。 (看起來不像ANSI SQL ...) – jarlh

+0

它的SQL服務器2008 @jarlh – tbs

回答

0

我假設你正在使用Sql Server

;with cte as(select *, row_number() over(order by ID) rn from Info) 

update c1 set Closed_date = c2.Update_date, 
       Closed_time = c2.Update_time 
from cte c1 
join cte c2 on c1.rn = c2.rn - 1 and c1.Addr = 'Office' and c2.Addr <> 'Office' 
+0

感謝Giorgi :)它的工作。我試着用Cte,但我失去了addr的條件。謝謝 – tbs

+0

@tbs,考慮接受答案是它回答你的問題... –

+0

Update_date和Update_time應該是升序,然後我需要更新此查詢。 – tbs

相關問題