假设我有下表:
id param result
1 AAA TRUE
1 AAA FALSE
1 AAA FALSE
1 BBB TRUE
1 CCC TRUE
2 AAA TRUE
2 CCC TRUE
3 AAA FALSE
3 AAA FALSE
3 AAA FALSE
3 CCC TRUE
3 BBB TRUE
是否可以通过[param]列进行分组,以便如果任何相应的结果为TRUE,则[result]将显示为TRUE,如果没有为TRUE,则显示为FALSE?以下是我的目标示例:
id param result
1 AAA TRUE
1 BBB TRUE
1 CCC TRUE
2 AAA TRUE
2 CCC TRUE
3 AAA FALSE
3 CCC TRUE
3 BBB TRUE
答案 0 :(得分:2)
这是一个可行的代码草图。您只需要为result
添加正确的常量:
select id, param,
(case when sum(case when result = TRUE then 1 else 0 end) > 0
then TRUE else FALSE
end)
from table t
group by id, param;
SQL Server没有本机布尔类型,并且不理解" true"和"假"。对于某些表示形式(例如'TRUE'
和'FALSE'
),以下内容将起作用:
select id, param, max(result) as result
from table t
group by id, param;