如何使用分组集基于列值计算总计?

时间:2020-06-25 15:45:15

标签: sql oracle

也许我不需要使用分组集,但是它可以为我提供所有的总计。我需要的是基于列comp_code值的总计。我只是不确定如何去做?我曾尝试进行汇总和汇总,但都没有成功,只是使表格看起来非常凌乱。

任何帮助将不胜感激。预先感谢您的帮助和您的宝贵时间。

当前SQL

January (count from 11/01/2019 to 01/31/2020)
February (count from 11/01/2019 to 01/31/2020)
March (count from 12/01/2019 to 02/29/2019)
April (count from 02/01/2020 to 04/30/2020)

电流输出

select nvl(a.comp_code, 'GRAND TOTAL) as COMP_CODE, a.inv_prex, a.inv_num, to_char(a.inv_date,'yy-mm-dd') as inv_date, a.cust_code, b.cust_name, sum(round(a.inv_amt,2)) as inv_amt, a.inv_reg_num
from c_inv_h a 
left join m_cust_h_b
on a.comp_code=b.comp_code and a.cust_code=b.cust_code
where a.inv_date between to_date('20\06\01', 'yy\mm\dd') and to_date('20\06\24', 'yy\mm\dd')
and a.cust_code='102204'
group by
grouping sets
((),
(a.inv_prex, a.inv_num, a.inv_date, a.comp_code, a.cust_code, b.cust_name, a.inv_reg_num))

我正在尝试实现的输出

comp_code | inv_prex | inv_num | inv_date | cust_code | cust_name   | inv_amt | inv_reg_num
---------------------------------------------------------------------------------------------
C4           AIC        410       20-06-01   102204      test comp     157.5    302
C4           AIC        432       20-06-05   102204      test comp     63       301
T3           AIT        1272      20-06-01   102204      test comp     1134.97  335
GRAND TOTAL                                                            1355.47             

1 个答案:

答案 0 :(得分:2)

我想你想要

group by grouping sets ((a.inv_prex, a.inv_num),
                        (a.inv_prex, a.inv_num, a.inv_date, a.comp_code, a.cust_code, b.cust_name, a.inv_reg_num)
                       )