如何解决Postgres查询根据状态条件将多行合并为一行
我有一个下面的数据示例
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 问题提出。清楚地说明您的逻辑,并提供示例数据和所需结果,涵盖您需要交流的主要场景。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。