3

我有一张桌子:

declare @tbl as table (
  Name nvarchar(10), Property int
)

表中的样本数据如下:

Name | Property
'A'  | 0
'A'  | 1
'A'  | 2
'A'  | 3
'B'  | 0
'B'  | 2
'B'  | 1
'C'  | 0

如何将此表与描述分组列索引的列一起返回?

预期结果:

Name | Property | Index
'A'  | 0        | 1
'A'  | 1        | 1
'A'  | 2        | 1
'A'  | 3        | 1
'B'  | 0        | 2
'B'  | 2        | 2
'B'  | 1        | 2
'C'  | 0        | 3

请建议!谢谢!

更新

我像这样使用dense_rank()(我认为是错误的方式)

SELECT 
   *, 
   DENSE_RANK() OVER (PARTITION BY [Name] ORDER BY [Property]) AS R
FROM @tbl
4

2 回答 2

4

使用 DENSE_RANK:

select *
  , [Index] = dense_rank() over (order by Name)
from tbl

SQL Fiddle 与演示

于 2013-06-18T12:11:31.987 回答
1

试试这样...

Select Name,Property ,Dense_Rank() OVER 
    (ORDER BY Name) AS [Index] from TableName
于 2013-06-18T12:11:34.053 回答