Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将SQL表和ORACLE表分组,并同时显示特定行_Sql_Database_Oracle_Group By_Rollup - Fatal编程技术网

如何将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的结果。