基于两列创建编号序列



我正在尝试基于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;

最新更新