【问题标题】:Create number sequence based on two columns基于两列创建编号规则
【发布时间】:2021-04-01 22:31:21
【问题描述】:

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

有什么建议吗?谢谢。

【问题讨论】:

    标签: sql sql-server tsql window-functions


    【解决方案1】:

    使用DENSE_RANK

    SELECT Sno, UnitCost, DENSE_RANK() OVER (ORDER BY Sno, UnitCost) RequiredColumn
    FROM yourTable;
    

    【讨论】:

    • 谢谢。我也不必要地潜入了分区条款。很久之后尝试一些 sql :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2010-12-16
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多