Sql 如何使用分组集根据列值计算总计?

Sql 如何使用分组集根据列值计算总计?,sql,oracle,Sql,Oracle,也许分组集不是我需要使用的,但它能给我所有东西的总数。我需要的是基于列comp_code值的总计。我只是不知道该怎么办?我试过折叠和卷起,但没有成功,只是把桌子弄得乱七八糟 任何帮助都将不胜感激。提前感谢您的帮助和时间 当前SQL 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.

也许分组集不是我需要使用的,但它能给我所有东西的总数。我需要的是基于列comp_code值的总计。我只是不知道该怎么办?我试过折叠和卷起,但没有成功,只是把桌子弄得乱七八糟

任何帮助都将不胜感激。提前感谢您的帮助和时间

当前SQL

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             
我正在努力实现的产出

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
GRAND TOTAL                                                            220.5
T3           AIT        1272      20-06-01   102204      test comp     1134.97  335
GRAND TOTAL                                                            1134.97
我想你想要:

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)
                       )
我想你想要:

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)
                       )

嗨,戈登,非常感谢你。你的回答我能够达到我想要的结果,只是在第一组分组中切换了一些列名。看来我没有正确使用分组集,所以谢谢你告诉我正确的方法。嗨,戈登,非常感谢你。你的回答我能够达到我想要的结果,只是在第一组分组中切换了一些列名。看来我没有正确使用分组集,所以谢谢你给我展示了正确的方法。