如何更改T-SQL查询中的行号行为?

我正在使用 SQL Server 2014 并且我有以下针对表 (tbl1) 运行的 T-SQL 查询。

tbl1 的摘录:

emp_code     Name     Address   Company
---------------------------------------
100          Peter    London     ABC
125          Allan    Cambridge  DCE
125          Allan    Cambridge  DCE
115          John     Suffolk    ABC
115          John     Suffolk    XYZ
154          Mary     Highlands  ABC
154          Mary     Bristol    ABC
124          Mary     Chester    ABC

我的 T-SQL 查询如下:

SELECT
    [ID],
    [Name],
    [Address],
    [Company],
    ROW_NUMBER() OVER (PARTITION BY [emp_code] ORDER BY [Address]) AS RowNumber
FROM
    [tbl1]

上述查询的输出:

emp_code         Name     Address   Company    RowNumber
--------------------------------------------------------
    100          Peter    London     ABC          1
    125          Allan    Cambridge  DCE          1
    125          Allan    Cambridge  DCE          2
    115          John     Suffolk    ABC          1
    115          John     Suffolk    XYZ          2
    154          Mary     Highlands  ABC          1
    154          Mary     Bristol    ABC          2 
    154          Mary     Chester    ABC          3

我追求的输出:

emp_code         Name     Address   Company    RowNumber
---------------------------------------------------------
    100          Peter    London     ABC          1
    125          Allan    Cambridge  DCE          1
    125          Allan    Cambridge  DCE          1
    115          John     Suffolk    ABC          1
    115          John     Suffolk    XYZ          1
    154          Mary     Highlands  ABC          1
    154          Mary     Bristol    ABC          2 
    154          Mary     Chester    ABC          3

我希望我的 RowNumber(或根据需要更改列名)根据[Address]每个[emp_code]. 如果员工有相同的地址,它应该具有相同的值(即 1)。否则,它应该给出与员工“玛丽”(输出上方)的情况一样的值。

我假设该Row_Number()功能不适合用于我所追求的功能。

任何帮助,将不胜感激。

回答

我认为你想要DENSE_RANK这里而不是ROW_NUMBER()

SELECT [ID], [Name], [Address], [Company],
       DENSE_RANK() OVER (PARTITION BY [emp_code] 
                          ORDER BY [Address]) AS DenseRank
FROM [tbl1];

演示


以上是如何更改T-SQL查询中的行号行为?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>