2015-06-15 44 views
-2
attendance id   status activity 
1      0  xyz 
2      1  abc 
3      2  abc 
4      1 

我有一個塔,在其中ID是爲前一個唯一值時狀態= 2更新的下一個出席ID和狀態= 2的活性複製到下一個考勤編號即ie 4拷貝列數據到下一行上,當在SQL條件

我該怎麼做?

+4

首先決定您正在使用的數據庫並正確標記您的問題。 –

+0

好的先生從下一個tym我會盡量活到你的期望。 .....現在你可以幫我在這裏 –

+0

你的意思是你想複製狀態0從出席身份證1到出席身份證2,並且參加者身份證2的狀態是3.是嗎? – Ionic

回答

0

如果您的意思是您想將狀態複製到下一個數據行。你可以使用這個聲明。我已經添加了一些演示代碼。

CREATE TABLE #temp(attendance_id int identity(1,1), status int, acitivity nvarchar(10)) 

INSERT INTO #temp(status, acitivity) 
VALUES(0, N'xyz'),(1,N'abc'),(2,N'abc'),(3,NULL) 

-- see what happens 
SELECT t.attendance_id, t.status as oldStatus, ISNULL(shifting.status,t.status),t.acitivity 
FROM #temp t 
LEFT JOIN (
    SELECT status, ROW_NUMBER() OVER (ORDER BY attendance_id) +1 as rn 
    FROM #temp 
    ) as shifting 
    ON t.attendance_id = shifting.rn 

-- the update itself 
UPDATE t 
SET status = ISNULL(shifting.status,t.status) 
FROM #temp t 
LEFT JOIN (
    SELECT status, ROW_NUMBER() OVER (ORDER BY attendance_id) +1 as rn 
    FROM #temp 
    ) as shifting 
    ON t.attendance_id = shifting.rn 

SELECT * FROM #temp 

DROP TABLE #temp