我正在尝试找到一个解决方案,我可以将结果限制在找到重复ID的数据表上。
示例数据示例:
ID | Typeofstaff | Role
---------------------------------------
779 | 2 | 284
779 | 5 | 276
1299 | 5 | 488
1299 | 2 | 322
627 | 4 | 456
627 | 4 | 476
898 | 5 | 321
999 | 3 | 567
1027 | null | 890
1027 | 2 | 891
如果[ID]重复且他们有[Typeofstaff] = 2,那么只需显示[Typeofstaff] = 2 的行
如果[ID]& [Typeofstaff]重复,然后显示其中一行。
如果[ID]中不存在重复项,则正常显示该行。
答案 0 :(得分:1)
您可以使用ROW_NUMBER()执行此操作:
SELECT ID, Typeofstaff, Role,
FROM (
SELECT ID, Typeofstaff, Role,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY COALESCE(TypeofStaff,1000) ASC) AS RN
) X
WHERE RN = 1