【问题标题】:Oracle Apex 20.1 Set Status to 'Fullfilled' or 'Pending' based on overall project statusOracle Apex 20.1 根据整体项目状态将状态设置为“已完成”或“待定”
【发布时间】:2021-06-19 10:18:40
【问题描述】:

在我的表格中,我有一列可以包含多个项目里程碑的项目(第二列)。每个里程碑都可以将值“fullfilled”或“pending”作为 current_status(第三列)。现在我想汇总每个项目的整体状态,并为其分配一个最终状态(新的虚拟列)以便更好地概览。

以下规则应适用:

  • 如果每个里程碑都已完成,则项目的状态应更改为“已完成”

  • 如果有一个或多个里程碑未决,则项目状态应为“暂停”

意思是我想检查每个项目的每个当前状态以获得最终状态。

知道如何使用 case-when-clause 或类似的东西来做到这一点吗?

谢谢。

亲切的问候。

【问题讨论】:

    标签: sql oracle plsql oracle-apex


    【解决方案1】:

    如果只有两个状态,则检查唯一的状态是否为'finished'。

    第 1 - 9 行中的示例数据:

    • 项目 1 已完成,因为它的所有里程碑状态都“已完成”
    • 项目 2 仍处于搁置状态,因为唯一的里程碑“已完成”

    SQL> with project (projno, mileno, milestatus) as
      2    (select 1, 1, 'fulfilled' from dual union all
      3     select 1, 2, 'fulfilled' from dual union all
      4     select 1, 3, 'fulfilled' from dual union all
      5     --
      6     select 2, 1, 'fulfilled' from dual union all
      7     select 2, 2, 'pending'   from dual union all
      8     select 2, 3, 'pending'   from dual
      9    )
     10  select projno,
     11    case when min_status = max_status and
     12              max_status = 'fulfilled'
     13         then 'Finished'
     14    else 'On hold'
     15    end project_status
     16  from (select projno,
     17          min(milestatus) min_status,
     18          max(milestatus) max_status
     19        from project
     20        group by projno
     21       );
    
        PROJNO PROJECT_
    ---------- --------
             1 Finished
             2 On hold
    
    SQL>
    

    【讨论】:

    • 正是我想要的。非常感谢。真的很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2018-11-03
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多