问题描述
Col1 Col2 Status
a ab Failed
a bc Running
a cd Completed
我期望的输出是
Col1 Status
a Failed
即任何一个Subjob(Col2)失败,则Main作业应显示为Failed
解决方法
一个选项使用distinct on
和条件排序:
select distinct on (col1) col1,status
from mytable
order by
col1,case status
when 'Failed' then 0
when 'Running' then 1
when 'Completed' then 2
end
这将优先级设置为“失败”,然后是“正在运行”,然后是“已完成”。
您还可以使用布尔值进行排序,例如:
order by
col1,(status = 'Failed') desc,(status = 'Running') desc,(status = 'Completed') desc
,
我认为对您所提问题的最简单答案是:
select distinct col1,status
from t
where status = 'Failed';
这将返回所有失败的col1
。
如果您有其他问题,则应将其作为 new 问题提出。清楚地说明您的逻辑,并提供示例数据和所需结果,涵盖您需要交流的主要场景。