我正在使用 SQL Server Management Studio 2012。我从下面显示的查询中得到了类似的输出。我想从查询中删除有 2 个契约(Contract)的人。

Select
Row_Number() over (partition by ID ORDER BY  ContractypeDescription DESC) as [Row_Number],
Name,
ContractDescription,
Role

From table

输出
Row_Number   ID     Name     Contract Description   Role
    1       1234    Mike          FullTime          Admin
    2       1234    Mike          Temp              Manager
    1       5678    Dave          FullTime          Admin
    1       9785    Liz           FullTime          Admin

我想看什么
 Row_Number   ID    Name     Contract Description   Role
    1       5678    Dave          FullTime          Admin
    1       9785    Liz           FullTime          Admin

是否有一个函数而不是 Row_Number 允许您将行组合在一起,这样我就可以使用诸如“其中 Row_Number 不像 1 和 2”之类的东西?

最佳答案

您可以使用 HAVING 作为

SELECT ID,
       MAX(Name) Name,
       MAX(ContractDescription) ContractDescription,
       MAX(Role) Role
FROM t
GROUP BY ID
HAVING COUNT(*) = 1;

Demo

关于sql - 允许对行进行分组的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57492841/

10-15 19:54