将查询分组为 3 列,并在 Apex Oracle 中显示另一列的总和
Posted
技术标签:
【中文标题】将查询分组为 3 列,并在 Apex Oracle 中显示另一列的总和【英文标题】:Group the query into 3 columns, and display the sums for another column in Apex Oracle 【发布时间】:2020-06-02 07:17:59 【问题描述】:我想报告。在我的要求中,这并不难。我在此请求中指定日期和记录类型(正数或负数)。我希望此查询按字段 CONTRACTORID、ITEMID ORGANIZATION 分组。并在 NETTO 上提取金额。
select
ID, DOCNUMBER,DOCDATE,PRINTNUMBER,DRIVERID,CONTRACTORID,ITEMID,
BRUTTO,TARE,NETTO,
DS_ID,
DAT_A,
MILEAGE,
ORGANIZATION,
sum(NETTO)
from WAYBILL
where trunc(DOCDATE) between to_date(:P115_D1,'dd.mm.yyyy')
and to_date(:P115_D2,'dd.mm.yyyy')
and DIRECTIONID = :P115_DIRECTIONID
group by
ID, DOCNUMBER,DOCDATE,PRINTNUMBER,DRIVERID,CONTRACTORID,ITEMID,
BRUTTO,TARE,NETTO,
DS_ID,
DAT_A,
MILEAGE,
ORGANIZATION
【问题讨论】:
如果您想按contractorid、itemid 和organization 分组,那么为什么要选择所有其他列?只需将它们从 select 子句和 group by 子句中删除即可,我会说。 提供您的预期结果 @ThorstenKettner 我也想查看报告中的其他列,但仅按分组列计算净额。有可能吗? 【参考方案1】:似乎您想要显示完整的行,每行都有每个其contractorid、itemid 和组织的净总和。您可以使用窗口函数来实现这一点:
select
id, docnumber, docdate, printnumber, driverid, contractorid, itemid,
brutto, tare, netto, ds_id, dat_a, mileage, organization,
sum(netto) over (partition by contractorid, itemid, organization) as netto_sum
from waybill
where trunc(docdate) between to_date(:p115_d1,'dd.mm.yyyy')
and to_date(:p115_d2,'dd.mm.yyyy')
and directionid = :p115_directionid
order by id;
【讨论】:
谢谢。但也许你并不完全了解我。所以我想显示整条线,但它们中的每一条都没有每个承包商的总金额。只是值,我想在此报告中显示的金额(在净列中)。例如,我有一些组织有文件的记录。我想在这个报告中提取这个组织的金额,如果还收敛两个字段contractorid,itemid。 也许他没有完全理解你,因为你没有提供预期的输出。 是的,也许我没有完全理解。看来我不是唯一一个 :-) 所以,请遵循 Jim Macaulay 在请求 cmets 中的建议并编辑您的请求以显示一些示例数据和预期结果。以上是关于将查询分组为 3 列,并在 Apex Oracle 中显示另一列的总和的主要内容,如果未能解决你的问题,请参考以下文章