【问题标题】: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>