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字段显示各个记录的地址

本回答被提问者采纳

sql server查询多表记录,后面一行增加合计?
可以使用 UNION ALL 和 GROUP BY 语句实现查询多表记录并在后面一行增加合计。以下是一个示例 SQL 查询语句:SELECT t1.id, t1.name, t1.amount FROM table1 t1 UNION ALL SELECT t2.id, t2.name, t2.amount FROM table2 t2 GROUP BY t2.id, t2.name, t2.amount WITH ROLLUP;在此查询...

sql语句如何在查询记录后面增加一行合计
其中:先把表中的所有数据查询出来,然后按照表的结构,select 主键列,'合计',SUM(C),SUM(D) from 数据表 使用SQL的数学函数 动态添加一行数据,最后使用 union 关键字 连接两次查询的结果。

sql视图表怎么增加合计行?
要在SQL视图中添加一个汇总行,可以使用`UNION ALL`语句将汇总数据添加到原始查询结果中。以下是一个示例,显示如何为"货款"和"件数"添加合计行:在这个例子中,我使用了`UNION ALL`将原始查询和汇总查询的结果合并在一起。汇总查询使用了`SUM`函数来计算"货款"和"件数"的总和。注意在汇总行中,我...

SQL查询一批数据,怎么在最后一行增加个合计
可以用联合查询(union all)来实现这个需求 例如:select orderID,goodsID,quantity from t1 union all select null,null,sum(quantity)from t1;

sql语句实现增加一行求和
如果是SQL Server, 尝试用下面的语句 select case when GROUPING(a.rcpt_no) = 1 and GROUPING(b.姓名) = 1 then 'SUM' else Max(b.姓名) end 姓名,case when GROUPING(a.rcpt_no) = 1 and GROUPING(b.姓名) = 1 then 'SUM' else Max(a.rcpt_no) end 收据,sum(case when a....

sql在两行查询结果上增加一个合计列
select sum(total) over() hj,* from (select er_bxzb.djbh as djbh, er_djlx.djlxmc as djlxmc, bd_costsubj.costname as costname, bd_deptdoc.deptname as deptname, bd_psndoc.psnname as psnname, sum(er_bxzb.total) as total, er_bxzb.djrq as djrq ...

sql语句 最后一行增加合计
select shuliang as 数量 ,shoujia as 售价 from dingdan UNION ALL select '合计金额 ' as 数量 ,sum(shuliang * shoujia) as 售价 from dingdan

SQL如何在内表最后一列添加合计项
ta.款号, ta.材料代号, ta.材料名称 ,ta.用量,tb.合计 as 合计 from test_db as ta left join (select 订单号,材料名称,sum(用量) as 合计 from test_db group by 订单号,材料名称 ) as tb on ta.订单号=tb.订单号 and ta.材料名称=tb.材料名称 已经在sql server 上测试通过。

如何将sql中两个连接表查询出来的结果 进行合计 急等
select sum(fprice) from (select fitemid,fprice from a union select fitemid,sum(fprice) from b group by fitemid ) t 两个全连接语句可以任意加上条件,将查出来的信息合并再合计

SQL明细及汇总,请帮我在最后一行增加行合计
with tb1 as (你的查询语句)select * from tb1 union select name+'合计',sum(数量),avg(单价1),sum(金额2),avg(折扣),avg(单价2),sum(金额2),avg(单价3),sum(金额3) from tb1 group by name 个人觉得单价和折扣应该按平均来算,如果要累加自己改一下函数 ...

相似回答