我正在使用 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/