对表列进行分组

时间:2014-10-14 14:00:25

标签: sql sql-server tsql

以下表格中有两列 ID 结果

ID      Result
8000010  YES
8000010  NO
8000011  YES
8000012  NO
8000023  NO
8000025  YES
8000025  YES
8000026  NO
8000026  NO

我需要聚合这样一种方式,即如果 ID 的特定组合的结果那么整个结果其他。例如,

8000010 YES
8000010 NO

输出
8000010否


8000025 YES
8000025 YES

输出
8000025是

2 个答案:

答案 0 :(得分:2)

您可以通过聚合来完成此操作。

Select Id, MIN(Result)
from your_table
group by Id

答案 1 :(得分:1)

您也可以使用CTE执行此操作,它可以作为通用解决方案,因为它可以在结果中处理3个或更多值,如果我们假设您还有MAYBE作为值

;with new_table as ( select id, result, case when result = 'YES' then 3 when result = 'MAYBE' then 2 else 1 end as rank from your_table) select id, case when min(rank) = 1 then 'NO' when min(rank) = 2 then 'MAYBE' ELSE 'YES' end as Result from new_table group by id