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

Use DENSE_RANK:

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

SQL Fiddle with demo.

于 2013-06-18T12:11:31.987 に答える
1

try like this...

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