顶点:列总和
APEX: Column Sum
我有table"ZM"这样
ZM_ID |COSTS
10000 |200
10001 |700
10002 |100
10003 |500
10004 |100
在第 18 页我有项目 :P18_ZM_ID
:
我得到了我感兴趣的 am_id
值的逗号分隔列表
select listagg (ZM_ID, ',') within group (order by ZM_ID) as ZM_ID
from EST_ZM
where EST_ID = :P18_EST_ID
这个 returns 像“10000,10002,10004”这样的值到我的 :P18_ZAM_ID
项目
现在,我想要总成本 ZM_ID = :P18_ZM_ID
我试过
select SUM(Costs)
from ZM
where ZM_ID IN (:P18_ZAM_ID)
但不起作用。
您是否需要分两步执行此操作?这似乎更有意义(并且我假设您有两个不同的 tables zm
和 est_zm
,因为您的查询有两个不同的 table 名称--如果真的只有一个 zm
table)
可以简化查询
SELECT sum(costs)
FROM zm
WHERE zm_id IN (SELECT zm_id
FROM est_zm
WHERE est_id = :p18_est_id)
您的代码无法正常工作的原因是字符串 1,2,3
之间存在巨大差异,字符串 1,2,3
是一个恰好有两个逗号和一个值列表的字符串。如果您在 IN
查询中使用逗号分隔的字符串,它将被视为单个标量值而不是多个单独的元素。您可以采用逗号分隔的字符串,将其解析为包含多个元素的集合,然后在查询中使用该集合。但是随后您将从查询中获取数据,将其聚合为单个字符串,将其分解为一个集合,然后将其发送回 SQL 引擎,这通常比您想要的要复杂得多.
我有table"ZM"这样
ZM_ID |COSTS
10000 |200
10001 |700
10002 |100
10003 |500
10004 |100
在第 18 页我有项目 :P18_ZM_ID
:
我得到了我感兴趣的 am_id
值的逗号分隔列表
select listagg (ZM_ID, ',') within group (order by ZM_ID) as ZM_ID
from EST_ZM
where EST_ID = :P18_EST_ID
这个 returns 像“10000,10002,10004”这样的值到我的 :P18_ZAM_ID
项目
现在,我想要总成本 ZM_ID = :P18_ZM_ID
我试过
select SUM(Costs)
from ZM
where ZM_ID IN (:P18_ZAM_ID)
但不起作用。
您是否需要分两步执行此操作?这似乎更有意义(并且我假设您有两个不同的 tables zm
和 est_zm
,因为您的查询有两个不同的 table 名称--如果真的只有一个 zm
table)
SELECT sum(costs)
FROM zm
WHERE zm_id IN (SELECT zm_id
FROM est_zm
WHERE est_id = :p18_est_id)
您的代码无法正常工作的原因是字符串 1,2,3
之间存在巨大差异,字符串 1,2,3
是一个恰好有两个逗号和一个值列表的字符串。如果您在 IN
查询中使用逗号分隔的字符串,它将被视为单个标量值而不是多个单独的元素。您可以采用逗号分隔的字符串,将其解析为包含多个元素的集合,然后在查询中使用该集合。但是随后您将从查询中获取数据,将其聚合为单个字符串,将其分解为一个集合,然后将其发送回 SQL 引擎,这通常比您想要的要复杂得多.