SQL ROW_NUMBER LIKE函数

时间:2013-09-25 20:07:34

标签: sql-server

我想知道是否有办法在SQL Server脚本中执行以下操作。

假设我有下表

**为简单起见,示例中的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 个答案:

答案 0 :(得分:1)

DENSE_RANK()就是你所需要的。

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