我有以下查询:
select col1, sum( col2 ), count( col3 )
from table1
group by col1
order by col1
返回类似这样的内容
col1
dept1
dept2
dept3
col2
10
20
30
col3
2
3
4
如果没有存储过程,是否可以在原始查询生成的结果下方获得总列?
即
col1
dept1
dept2
dept3
total
col2
10
20
30
60
col3
2
3
4
9
答案 0 :(得分:5)
使用ROLLUP:
;with Table1 as (
select 'dept1' as col1, 5 as col2,1 as col3
union all
select 'dept1', 5 as col2, 1 as col3
union all
select 'dept2',10,1
union all
select 'dept2',5,1
union all
select 'dept2',5,1
union all
select 'dept3',10,1
union all
select 'dept3',5,1
union all
select 'dept3',5,1
union all
select 'dept3',10,1
)
select COALESCE(col1,'total'), sum( col2 ), count( col3 )
from table1
group by col1
with rollup
order by COALESCE(col1,'ZZZZZ')
结果:
(No column name) (No column name) (No column name)
dept1 10 2
dept2 20 3
dept3 30 4
total 60 9
答案 1 :(得分:1)
查看WITH ROLLUP
子句
GROUP BY
答案 2 :(得分:1)
是的:
select col1, sum(col2), count(col3)
from table1
group by col1
union all
select 'totals', sum(col2), count(1) from table1
order by col1