如何基于postgres中其他列的值插入单行的文本列

问题描述 投票:0回答:1

我想根据特定参数的值插入符号行的文本结果。

例如

表1

Id | status
____________
23 | complete
24 | going on
34 | failed
56 | complete

表1中现在,如果任何一个或多个条目的状态为“失败”,则我的查询结果应为:

Result | tableName
___________________
Failed | Table1

如果任何一个或多个条目的状态为“正在进行”,并且没有行的状态为“失败”,则我的查询结果应为:

Result | tableName
___________________
Going on | Table1

最后,如果状态栏中的所有值均为'complete',则结果应为:

Result | tableName
___________________
Complete | Table1

最后,查询结果基于“状态”列,优先级为:

1. Failed
2. Going on
3. Complete

有人可以帮我吗?

postgresql case-statement
1个回答
0
投票

我认为您需要条件聚合:

select
    case
        when count(*) filter(where status = 'failed')   > 0 then 'failed'
        when count(*) filter(where status = 'going on') > 0 then 'going on'
        when count(*)                                   > 0  then 'complete'
    end result
from mytable
© www.soinside.com 2019 - 2024. All rights reserved.