如何在Oracle中添加小计和总计

时间:2019-04-09 19:19:24

标签: sql oracle subtotal

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

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

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

%{THE_REQUEST}

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

1 个答案:

答案 0 :(得分: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语法。
  • 使用日期比较,而不是调用函数。这既清楚又使优化程序更容易。
  • 表别名是表名称的缩写,因此查询更容易进行。