Oracle如何将多次分组求和的数据合并到一张表上?

如何将sql嵌套语句中分组数据放到一张表上。求指点,详情看截图。

个人十分费力的看了看你的图,说实话真的很费眼睛。
你说的统计,我首先想到的就是分层统计rollup或者cube。
看你的最终需求似乎也是这种要求,唯一就是我不知道你的表结构是不是完全按照分层标题这样设立的,如果是那么只要按照细粒度的顺序摆列就好了。
最大的两个是销售产品成本和冷运成本(字段1),冷运成本则又分为固定成本和变动成本(字段2),再往下则是最小的细粒度(字段3标示出)。

那么只要 group by rollup(字段1,字段2,字段3)就可以了。
这样字段3有值的就是什么水电费,房租费那种,字段3没有值,字段2有值的就是固定成本和变动成本,字段2也没有值的就是销售产品成本和冷运成本。直接就能查出来了。只是rollup的合计在下面,和你最终的表格稍稍有些出入。追问

抱歉,大神,以为这样会比较好看些,因为源码太长超出字数限制了。
确实如您所说分层统计,并且按照顺序进行排列,我如何能把源码发给您过目啊

追答

我举个例子,希望你能看懂
表格:
字段1 字段2 字段3 其他属性字段 数值
select 字段1,字段2,字段3,sum(数值) from 表格 group by rollup(字段1,字段2,字段3)
出来的结果是
字段1 字段2 字段3 数值
字段1 字段2 数值
字段1 数值
也就是说本身就是分层统计的,其中第二行,是第一行的内容的合计(如果你的字段2有两个值,那么就是这两个值的分别的合计),第三行是第二行的合计(字段1有多个值的时候也是一样的),数都查出来了,剩下的就好办了。

追问

多谢大神,您的意思我明白了,代码已经发您私信,目前的问题就是我在字段里面用了case when,在后面自己定义的标签,然后起的别名,如果gourp by rollup后面怎么加字段呀,吧case when复制过去吗?我试了一下好像不行..求指点,小弟刚刚开始学习Oracle还请您见谅

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-11
根本不用套写,使用Group By Grouping Sets((全分组字段),(二级分组字段),(三级分组字段)......要多少写多少) 方法就可以实现追问

求指教大神,源码已经发您私信。

追答

看图效果

第2个回答  2019-12-11
利用公式就可以了。很简单追问

用公式很简单,但是想在sql里面直接呈现,不在Excel里面在做计算,如果操作呀,或者有什么函数?小弟刚开始接触Oracle语言,还请大神指教

第3个回答  2019-12-11
题主使用的这个是甲骨文数据库软件嘛。。。追问

嗯,Oracle数据库

相似回答