【问题标题】:SQL Adding row numbersSQL 添加行号
【发布时间】:2023-03-14 20:26:01
【问题描述】:

我正在寻找一种添加行号的方法,但是当其中一列重复时添加重复的行号

逻辑 * 每次 Col1 总是从 1 开始 RowNo * 每次 Col1 + Col2 都相同时使用相同的 RowNo

表1

Col1    Col2
1       A       
1       B       
1       B       
2       C       
2       D       
2       E       
3       F       
4       G       

输出应该是

Col1    Col2  RowNo
1       A       1
1       B       2
1       B       2
2       C       1
2       D       2
2       E       3
3       F       1
4       G       1

我试过了,但输出不正确 选择 col1,col2 ,row_number() over(partition by (col1+col2) order by col1) 来自表1

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    使用DENSE_RANK()

    SELECT Col1, Col2,
        DENSE_RANK() OVER (PARTITION BY Col1 ORDER BY Col2) RowNo
    FROM yourTable;
    ORDER BY Col1, Col2;
    

    Demo

    【讨论】:

    • @Mags 如果这个答案解决了你的问题,你能把它标记为正确吗?
    【解决方案2】:

    您可以使用row_number 窗口函数在col1 列上进行分区并在col2 上进行排序

    select t.*,
        row_number() over (partition by col1 order by col2) as col3
    from your_table t;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-01
      • 2016-07-23
      • 2021-12-23
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多