我正在尝试基于Sno和UnitCost这两列生成数字序列。数字应该按顺序递减,但当两列相同时,数字不应该改变。但是,如果任何一列不同,它应该递增。
我尝试了row_number()
、rank()
、dense_rank()
,但一直无法达到正确的逻辑。
以下是所需列和现有列:
Sno UnitCost RequiredColumn
ch01 10 01
ch01 10 01
ch02 20 02
ch02 20 02
ch02 30 03
ch02 30 03
ch03 10 04
有什么建议吗?谢谢
使用DENSE_RANK
:
SELECT Sno, UnitCost, DENSE_RANK() OVER (ORDER BY Sno, UnitCost) RequiredColumn
FROM yourTable;