sql语句如何在查询记录后面增加一行合计
比如表里面的记录是这样的ABCD1张三100102李四200203王武300304李逵40040我想要的效果就是能有有一条SQL语句直接就显示出来如下的效果ABCD1张三...
比如表里面的记录是这样的
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 展开
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 展开
3个回答
推荐于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
-创建表
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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字段显示各个记录的地址
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询