SQL添加行号

时间:2018-01-10 11:04:06

标签: sql sql-server

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

逻辑 *每次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(分区由(col1 + col2)按col1排序) 来自表1

2 个答案:

答案 0 :(得分:6)

使用DENSE_RANK()

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

enter image description here

Demo

答案 1 :(得分:0)

您可以使用row_number窗口功能对col1列进行分区,并在col2上进行排序

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