实例数据(完整的表有行更多的列数以百万计):的Oracle SQL GROUP BY CUBE具有鲜明的ID
invoice_number |year |department |euros
-------------------------------------------------------------
1234 |2010 |1 | 200
1234 |2011 |1 | 200
1234 |2011 |2 | 200
4567 |2010 |1 | 450
4567 |2010 |2 | 450
4567 |2010 |3 | 450
我的目的:
我要总结的欧元每年和每个可能的组合中的每个部门。
结果应该如何看待:
year |department |euros
--------------------------------------------
2010 |1 |650
2010 |2 |450
2010 |3 |450
2010 |(null) |650
2011 |1 |200
2011 |2 |200
(null) |1 |650
(null) |2 |650
(null) |3 |450
(null) |(null) |650
我的查询:
select year
, department
, sum(euros)
from table1
group by cube (
year
, department
)
问题:
一个发票号码可以发生在几类。例如,一张发票可以有2010年和2011年的项目。当我想每年显示数据时,这没有问题。但是,当我想要总计所有年份的欧元总计两次,每年一次。我想要“按立方体分组”的功能,但我只想汇总不同的发票号码。
问题表:
year |department |euros
--------------------------------------------
2010 |1 |650
2010 |2 |450
2010 |3 |450
2010 |(null) |1550
2011 |1 |200
2011 |2 |200
(null) |1 |850
(null) |2 |650
(null) |3 |450
(null) |(null) |1950
是否有可能做我想做什么?到目前为止,我的搜索没有结果。我创建了一个SQL Fiddle,我希望它的工作原理
目前正在测试您的新解决方案以提升性能。 – Elisa
当我添加更多数据列时性能下降(显然)。当我添加所有列时,多维数据集组生成287.912行。对于一个较小的组,我'只'有4.488行。第二个有一个可以接受的表现,第一个没有。但解决方案似乎工作。 – Elisa