它是oracle数据库中的“table_one”:
COL1 COL2
-----------------
2 4
2 1
13 14
13 15
我有这个问题:
SELECT col1,sum(col2)FROM table_one GROUP BY ROLLUP(col1,col2);
查询执行后我有:
------------
2 1
2 4
2 5
13 14
13 15
13 29
34
但我需要另一种方式,比如:
------------
2 1
2 4
2 5
13 14
13 15
13 29
没有所有列的摘要 如何更改我的查询.....?
答案 0 :(得分:2)
有两种方法可以解决这个问题。第一种是使用分组集来准确定义要创建的摘要组。
在这种情况下,您可以使用以下查询定义分组(col1)和(col1,col2):
select col1, sum(col2)
from table_one
group by grouping sets ((col1), (col1, col2))
否则,您可以使用以下查询按col1和汇总对col2进行分组:
select col1, sum(col2)
from table_one
group by col1, rollup(col2)
这两个查询都应该生成您需要的输出。
答案 1 :(得分:1)
将您当前的查询用作子查询。在外部查询中,使用WHERE子句消除Col1中的NULL值
SELECT *
FROM
(
-- Your Rollup Query goes here.
SELECT * FROM MyTable
)
WHERE COL1 IS NOT NULL
在注释中提供了一个更好的解决方案,以消除源列中的NULL值
使用GROUPING功能确定它是否是小计。