根据行SQL的类型为每行分配Rank

时间:2015-02-10 17:48:07

标签: sql sql-server

我的表

DiagnosisCodes

Sequence  Type        Value
 1         Diagnosis   123
 22        Diagnosis   456
 38        Principal   111
 4         Diagnosis   789
 53        Principal   222

我需要从“诊断”表中进行选择,并根据“序列和类型”为每一行分配一个等级。最低序列获得该类型的最低等级。例如:序列1是类型"诊断"的最低序列。所以它的等级应该是1,类似的序列4是类型#34的第二低;诊断"所以它的等级应该是2.序列38最低的类型"校长"所以应该排名1,依此类推。

我希望输出:

Sequence  Type        Value Rank
 1         Diagnosis   123  1
 22        Diagnosis   456  3
 38        Principal   111  1
 4         Diagnosis   789  2
 53        Principal   222  2

我正在考虑使用数据透视或分区,但不确定这是否是最好的方法。

1 个答案:

答案 0 :(得分:3)

使用Row_Number窗口函数创建等级

select sequence , Type, Value,
       row_number() over(partition by Type order by sequence) As [Rank] 
From yourtable

注意:如果tie需要rank Dense_Rank,请使用Row_number代替{{1}}