项目状态表派生sql逻辑

xa9qqrwz  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(265)
Just sample entries

proj    stat   Inact
----------------------
PROJ1   I0002   
PROJ1   I0001   
PROJ2   I0042   X
PROJ3   I0046   X
PROJ3   I0045   
PROJ4   I0001   X
PROJ5   I0001   X
PROJ6   I0001   X

如果i0001、i0002或i0042中的任何一个处于活动状态(inact=空白),则它是打开的。
如果i0045或i0046中的任何一个处于活动状态(表示inact=空白或条目不存在),则它将关闭。
1和2条件都应满足
此外,如果上述5个状态不存在的任何特定项目,那么它也是默认打开
如何获取项目状态(打开、关闭)?请帮助。
proj stat是主键。

watbbzwu

watbbzwu1#

您似乎希望使用条件逻辑进行聚合:

select proj,
       (case when sum(case when stat in ('I0001', 'I0002', 'I0042') and inact is null then 1 else 0 end) > 0
             then 'open'
             when sum(case when stat in ('I0045', 'I0046') and inact is null then 1 else 0 end) > 0
             then 'closed'
             else 'open'
        end) as status
from t
group by proj

相关问题