如何将SQL表和ORACLE表分组,并同时显示特定行
我有这样的桌子:如何将SQL表和ORACLE表分组,并同时显示特定行,sql,database,oracle,group-by,rollup,Sql,Database,Oracle,Group By,Rollup,我有这样的桌子: Area | Client | Month a | A | 1 a | B | 1 b | C | 1 a | A | 2 b | B | 2 如何对该表进行分组和汇总,以获得如下结果: Area | Client | Month | Count a | A | 1 | 1 a | B | 1 | 1 a | | 1 |
Area | Client | Month
a | A | 1
a | B | 1
b | C | 1
a | A | 2
b | B | 2
如何对该表进行分组和汇总,以获得如下结果:
Area | Client | Month | Count
a | A | 1 | 1
a | B | 1 | 1
a | | 1 | 2
b | C | 1 | 1
b | | 1 | 1
| | 1 | 3
a | A | 2 | 1
a | B | 2 | 1
a | | 2 | 2
| | 2 | 2
| | | 5
我想按地区和月份统计客户,但也要列出客户列。我很难在客户栏出现的情况下使用“分组方式”。
我还想按月“排序”,但也要对摘要进行适当排序。对于此类查询,Oracle已经提供了,请使用:
select area, client , month, sum(month) count
from mytable
group by rollup(area, client,month)
order by area, client;
或者,这将生成小计的小计:
select area, client , month, sum(month) count
from mytable
group by cube(area, client,month)
order by area, client, month;
对于此类查询,Oracle已经提供了以下功能:
select area, client , month, sum(month) count
from mytable
group by rollup(area, client,month)
order by area, client;
或者,这将生成小计的小计:
select area, client , month, sum(month) count
from mytable
group by cube(area, client,month)
order by area, client, month;
我更喜欢cube
或rollup
,因为它更灵活
然而,使用它们的关键是您需要一个聚合。所以,我想你需要第四个专栏:
我更喜欢cube
或rollup
,因为它更灵活
然而,使用它们的关键是您需要一个聚合。所以,我想你需要第四个专栏:
为什么要在月份列中包含客户数量?那没有多大意义。您绝对需要总行数吗?如果没有,您可以使用分析函数将相关计数添加为每行的列。谢谢,我的错,计数应该作为另一列。为什么要将客户计数包括在月份列中?那没有多大意义。您绝对需要总行数吗?如果没有,您可以使用分析函数将相关计数添加为每行的列。谢谢,我的错误,计数应该作为另一列。我认为分组集应该是
((区域,客户,月),(区域,月),(月),())
,以实现OP的结果。我认为分组集应该是((区域,客户,月),(区域,月),(月),())
以实现OP的结果。