2015-10-30 21 views
0

我在SQL中有一個表,我想更新OrderNo列,它現在是null。我想根據父母questionId0,1,2,3,4,5...更新。如何根據SQL Server中的父字段分配值

表看起來是這樣的:

Id ParentId OrderNo 
1 1   NULL 
2 1   NULL 
3 1   NULL 
4 2   NULL 
5 2   NULL 
6 3   NULL 
7 3   NULL 
8 3   NULL 
9 3   NULL 

我想,基於ParentId,應該更新OrderNo列。

例如ParentId 1 =>那麼訂單號應該是0,1,2

我試圖使用光標和其他CTE查詢,但沒有找到任何最佳方法。

所需的輸出:

Id ParentId OrderNo 
1 1   0 
2 1   1 
3 1   2 
4 2   0 
5 2   1 
6 3   0 
7 3   1 
8 3   2 
9 3   3 
+0

請註明您所需的輸出,到目前爲止,你已經嘗試過什麼一起。 –

回答

1

這裏是你如何與window functioncommon table expression做到這一點:

;with cte as(select *, -1 + row_number() over(partition by parentid 
               order by id) as rn from tablename) 
update cte set orderno = rn 
相關問題