我在表中有数据,需要按Brand列进行排序,并按ClassCode更改进行排名。我尝试使用PARTITION BY使用ROW_NUMBER,RANK,DENSE_RANK函数,但未获得所需的结果。
随着ClassCode的更改,等级应该增加,并且我不能将PARTITION BY用于ClassCode,因为它会更改品牌的顺序。
示例表:
Code Brand ClassCode
101 Sony 201
103 LG 202
104 Nokia 203
107 Sony 201
108 Samsung 202
表数据需要按Brand排序并按ClassCode更改进行排名,如下所示:
所需结果:
Code Brand ClassCode rnk
103 LG 202 1
104 Nokia 203 2
108 Samsung 202 3
101 Sony 201 4
107 Sony 201 4
您可以使用dense_rank()
进行排名,并使用另一列进行排序:
select
t.*,
dense_rank() over(order by ClassCode) rnk
from mytable
order by brand, code