2013-09-25 101 views
0

我想知道是否有辦法在SQL Server腳本中執行以下操作。SQL ROW_NUMBER LIKE功能

比方說,我有如下表

**爲了使事情變得簡單,例如ID是INT。在我的真實情況下,這些是UNIQUEIDENTIFIER

ParentId  ChildId 
----------------------- 
101   201   
101   202  
101   203  
102   204   
102   205  
103   206  
103   207  
103   208   
103   209  

我想查詢表以獲得以下結果。

到目前爲止,我能夠使用ROW_NUMBER()函數獲取ChildIndex列。我現在用ParentIndex列掙扎......

ParentId  ChildId ChildIndex ParentIndex 
--------------------------------------------------- 
101   201  1    1 
101   202  2    1 
101   203  3    1 
102   204  1    2 
102   205  2    2 
103   206  1    3 
103   207  2    3 
103   208  3    3 
103   209  4    3 

這裏是我的查詢到目前爲止

SELECT ParentId, 
     ChildId, 
     ROW_NUMBER() OVER (PARTITION BY ParentId ORDER BY ParentId DESC) AS ChildIndex 
FROM MyTable 

回答

1

DENSE_RANK()是你所需要的。

DENSE_RANK() OVER (ORDER BY ParentId DESC) AS ParentIndex 
+0

謝謝......我已經嘗試過,但我在查詢中保留了PARTITION BY子句......這就是爲什麼它不起作用。 – Baral