oracle中如何添加小计和总计

Posted

技术标签:

【中文标题】oracle中如何添加小计和总计【英文标题】:How to add subtotal and total in oracle 【发布时间】:2019-04-09 19:19:23 【问题描述】:

我想将总计和小计添加到 Oracle 中的结果中

SELECT b.org_id  "Org ID", a.org_nm  "Org Name", b.trans_cd  "Transaction", TO_CHAR(b.creat_ts,'mm/dd/yyyy') "Date", b.trans_am "Amount"
FROM adrs a, advrg_fee b 
WHERE  a.org_id = b.org_id AND to_char(b.creat_ts,'yyyy') = 2019 AND to_char(b.creat_ts,'mm') = 04;

结果是这样的

Org ID  Org Name  Transaction    Date        Amount

  11       AA        T1         2018-4-11     100
  11       AA        T1         2018-5-11     200
  22       BB        T2         2017-9-7      200
  22       BB        T4         2018-9-11     100

现在我想将小计和总计添加到结果中。

Org ID  Org Name  Transaction    Date        Amount

  11       AA        T1         2018-4-11     100
  11       AA        T1         2018-5-11     200
  AA_subtotal                                 300
  22       BB        T2         2017-9-7      200
  22       BB        T4         2018-9-11     100
  BB_subtotal                                 300
  Total                                       600

我该怎么做?我尝试了汇总之类的功能,但不知道如何使用它。关于如何修改查询的任何建议?谢谢!

【问题讨论】:

如果你想在结果集中除了其他记录之外还有subtotaltotal记录,它们的列数必须与其他记录相同。您要将subtotaltotal 名称放在哪一列? oracletutorial.com/oracle-basics/oracle-rollup 你应该在这里找到答案:***.com/questions/19387650/… 【参考方案1】:

你可以使用GROUPING SETS:

SELECT af.org_id as "Org ID", a.org_nm as "Org Name",
       af.trans_cd as "Transaction",
       TO_CHAR(af.creat_ts, 'mm/dd/yyyy') as "Date",
       SUM(af.trans_am) as "Amount"
FROM adrs a JOIN
     advrg_fee af
     ON  a.org_id = af.org_id 
WHERE af.creat_ts >= DATE '2019-04-01' AND af.creat_ts < DATE '2019-05-01'
GROUP BY GROUPING SETS ( (af.org_id, a.org_nm, af.trans_cd, TO_CHAR(af.creat_ts, 'mm/dd/yyyy') ), (a.org_nm), () );

注意我对查询所做的更改:

这使用正确、明确、标准 JOIN 语法。 使用日期比较,而不是调用函数。这既更清晰,也使优化器更容易。 表别名是表名的缩写,查询起来更容易。

【讨论】:

以上是关于oracle中如何添加小计和总计的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 中总计和小计使用的函数

在 Shiny 中将总计/小计添加到数据表的底部

在 pandas muiltiindex 中添加小计/总计行会生成元组作为索引

结帐 magento 1.5 中的小计和总计加倍

s-s-rS 2008 - 如何将小计添加到矩阵

排除元素的 Excel 数据透视表小计