基于两列创建数字规则

Create number sequence based on two columns

我正在尝试根据 2 列 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;