sql语句如何在查询记录后面增加一行合计

比如表里面的记录是这样的
A B C D
1 张三 100 10
2 李四 200 20
3 王武 300 30
4 李逵 400 40
我想要的效果就是能有有一条SQL语句直接就显示出来如下的效果
A B C D
1 张三 100 10
2 李四 200 20
3 王武 300 30
4 李逵 400 40
合计 1000 100

假如:这些数据在一张名为:Test 的数据表中
select * from Test
union
select 5, '合计' , SUM(C) , SUM(D) from Test
其中:先把表中的所有数据查询出来,然后按照表的结构,select 主键列,'合计',SUM(C),SUM(D) from 数据表 使用SQL的数学函数 动态添加一行数据,最后使用 union 关键字 连接两次查询的结果。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-08
解决方法如下:
-创建表
if object_id('tempdb..#a','U') is not null
drop table #a ;
go
create table #a
(
A tinyint,
B char(4),
C smallint,
D tinyint
)
--插入数据
insert into #a (A,B,C,D)
values (1,'张三',100,10),
(2,'李四',200,20),
(3,'王武',300,30),
(4,'李逵',400,40);
--语句
with a as(
select cast(case grouping(A) when 0 then A else cast('合计' as sql_variant) end as char(4)) as A,cast(case grouping(A) when 0 then B else cast('合计' as sql_variant) end as char(4)) as B,sum(C) as C,sum(D) as D,row_number() over(partition by A order by A ) as rn
from #a
group by rollup(A,B)
)
select * from a where rn <>2 order by A

--结果展示
/*
A B C D rn
---- ---- ----------- ----------- --------------------
1 张三 100 10 1
2 李四 200 20 1
3 王武 300 30 1
4 李逵 400 40 1
合计 合计 1000 100 1本回答被网友采纳
第2个回答  推荐于2016-06-29
select a,
case
when b is not null then
b
else
'合计'
end b, sum(c) c, sum(d) d
from test1
group by rollup(a, b)
having grouping(a) = 1 or grouping(b) = 0追问

你好,请问一下如果我还要再多查询一个字段的信息该怎么做呢,就是再增加一个E字段显示各个记录的地址

本回答被提问者采纳