我有一张这样的桌子:
groupe subgroup id status
A a 1 up
A b 1 notdefined
A c 1 null
A a 2 up
A b 2 up
A c 2 up
A a 3 up
A b 3 up
A c 3 null
我需要的是为每个组合(组ID)返回指定的状态 如果每个(group,id)都有一个状态未定义,则返回全局状态为未定义
如果所有状态=向上返回全局状态=向上 如果有,但未指定空返回值
所以结果应该是这样
Groupe id global_status
A 1 notdefined
A 2 up
A 3 notspecified
我在sqlfiddle上尝试过一些
答案 0 :(得分:2)
您可以使用聚合和条件逻辑:
select groupe, id,
(case when count(*) filter (where status = 'notdefined') > 0
then 'notdefined'
when count(*) filter (where status is null) > 0
then 'notspecified'
when max(status) = min(status) and min(status) = 'up'
then 'up'
else 'something else'
end) as global_status
from t
group by groupe, id;
答案 1 :(得分:1)