APEX:列总和

时间:2015-09-15 22:16:02

标签: oracle oracle11g oracle-apex

我有像这样的表“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

这会在我的:P18_ZAM_ID

中返回类似“10000,10002,10004”的值

现在,我希望总和费用在ZM_ID = :P18_ZM_ID

我试过像

这样的东西
select SUM(Costs)  
  from ZM 
 where ZM_ID IN (:P18_ZAM_ID)

但不起作用。

1 个答案:

答案 0 :(得分:1)

您是否需要分两步执行此操作?它似乎更有意义(我假设你有两个不同的表ParallelTaskzm,因为你的查询有两个不同的表名 - 如果那里有查询可以简化实际上只有一个est_zm表)

zm

你的代码不起作用的原因是字符串SELECT sum(costs) FROM zm WHERE zm_id IN (SELECT zm_id FROM est_zm WHERE est_id = :p18_est_id) 之间存在巨大差异,字符串1,2,3是一个恰好有两个逗号的单个字符串和一个值列表。如果在IN查询中使用逗号分隔的字符串,则会将其视为单个标量值,而不是多个单独的元素。您可以使用逗号分隔的字符串,将其解析为具有多个元素的集合,然后在查询中使用该集合。但是,您将从查询中获取数据,将其聚合为单个字符串,将其解聚合到集合中,然后将其发送回SQL引擎,这通常会比您想要的更复杂。 / p>