首页 > 解决方案 > 在 Apex IG 中使用案例条件的 Oracle SQL 减去列

问题描述

在我的 oracle apex 交互式网格源查询中,我有 2 列。

默认情况下,两者在 DB 中都是浮点数,但需要用逗号分隔,因此使用 to_char。

第一列很简单,第二列是通过大小写得出的。

现在我需要减去这 2 个并将结果放在第三个虚拟列中。

当我编写查询时,例如:

 select to_char(KPI_1,'999,999,999,999.99') CURRENT_KPI, 
case when dept=1 then to_char(KPI_2,'999,999,999,999.99') 
else to_char(KPI_3,'999,999,999,999.99') end as NEW_KPI, 
CURRENT_KPI-NEW_KPI RESULT 
from KPI_DATA;

所以在这里我得到错误,NEW_KPI 是无效标识符,无论我是在应用程序中验证还是在 oracle 数据库中运行(sql developer 19)

如何编写查询以减去 CURRENT_KPI 和 NEW_KPI 的结果

甲骨文 12c Apex 20.2

标签: sqlplsqloracle-apex

解决方案


您可能想要复制该case语句。你想减去数字而不是字符串

select to_char(KPI_1,'999,999,999,999.99') CURRENT_KPI, 
       case when dept=1 
            then to_char(KPI_2,'999,999,999,999.99') 
            else to_char(KPI_3,'999,999,999,999.99') 
        end as NEW_KPI, 
       to_char( kpi_1 - case when dept=1 
                             then kpi_2
                             else kpi_3
                          end,
                 '999,999,999,999.99' ) result
from KPI_DATA;

不过,作为一项规则,我强烈建议您的查询返回一个数字,并在交互式网格的列属性中处理数字格式。这样,您就让显示组件处理如何显示数据,而数据组件处理要获取的数据。


推荐阅读