SQL按条件汇总求和
求SQL语句表ApointmarkAccount201John300Allen101Allen151John200Michael250John希望汇总计算出出如下表Poi...
求SQL语句
表A
point mark Account
20 1 John
30 0 Allen
10 1 Allen
15 1 John
20 0 Michael
25 0 John
希望汇总计算出出如下表
Point_0 Point_1 Account
25 35 John
30 10 Allen
20 0 Michael
其中,point_0和point_1分别是以表A的Mark为0和1分类,然后Account相同者汇总求和
首先 实际表里面Account一列有几万条记录,不仅仅只有3个人,其中每个人都可能存在几十上百条记录
因此语句中不可能把几千个不同的人一一列举
M888的语句不能得到正确的结果,你的结果不能按人进行求和,得到的结果只是按mark的0和1进行了求和而已,所有人的答案都是相同的错的 展开
表A
point mark Account
20 1 John
30 0 Allen
10 1 Allen
15 1 John
20 0 Michael
25 0 John
希望汇总计算出出如下表
Point_0 Point_1 Account
25 35 John
30 10 Allen
20 0 Michael
其中,point_0和point_1分别是以表A的Mark为0和1分类,然后Account相同者汇总求和
首先 实际表里面Account一列有几万条记录,不仅仅只有3个人,其中每个人都可能存在几十上百条记录
因此语句中不可能把几千个不同的人一一列举
M888的语句不能得到正确的结果,你的结果不能按人进行求和,得到的结果只是按mark的0和1进行了求和而已,所有人的答案都是相同的错的 展开
4个回答
展开全部
select sum(case when mark = 0 then point else 0 end) as Point_0,
sum(case when mark = 1 then point else 0 end) as Point_1,
Account
from 表A
group by Account;
***************
我从不辩解,测试log自己看:
[TEST@ORA1] SQL>select * from 表A;
POINT MARK ACCOUNT
---------- ---------- ----------
20 1 John
30 0 Allen
10 1 Allen
15 1 John
20 0 Michael
25 0 John
6 rows selected.
[TEST@ORA1] SQL>select sum(case when mark = 0 then point else 0 end) as Point_0,
2 sum(case when mark = 1 then point else 0 end) as Point_1,
3 Account
4 from 表A
5 group by Account;
POINT_0 POINT_1 ACCOUNT
---------- ---------- ----------
30 10 Allen
25 35 John
20 0 Michael
[TEST@ORA1] SQL>
---
以上,希望对你有所帮助。
sum(case when mark = 1 then point else 0 end) as Point_1,
Account
from 表A
group by Account;
***************
我从不辩解,测试log自己看:
[TEST@ORA1] SQL>select * from 表A;
POINT MARK ACCOUNT
---------- ---------- ----------
20 1 John
30 0 Allen
10 1 Allen
15 1 John
20 0 Michael
25 0 John
6 rows selected.
[TEST@ORA1] SQL>select sum(case when mark = 0 then point else 0 end) as Point_0,
2 sum(case when mark = 1 then point else 0 end) as Point_1,
3 Account
4 from 表A
5 group by Account;
POINT_0 POINT_1 ACCOUNT
---------- ---------- ----------
30 10 Allen
25 35 John
20 0 Michael
[TEST@ORA1] SQL>
---
以上,希望对你有所帮助。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
declare @t table(point int, mark varchar(1), Account varchar(10))
insert into @t
select 20,'1','John' union
select 30,'0','Allen' union
select 10,'1','Allen' union
select 15,'1','John' union
select 20,'0','Michael' union
select 25,'0','John'
select * from @t
select
isnull(sum(case mark when '0' then point end),0) point_0,
isnull(sum(case mark when '1' then point end),0) point_1,
Account
from @t
group by account
------------------------
(6 个资料列受到影响)
point mark Account
----------- ---- ----------
10 1 Allen
15 1 John
20 0 Michael
20 1 John
25 0 John
30 0 Allen
(6 个资料列受到影响)
point_0 point_1 Account
----------- ----------- ----------
30 10 Allen
25 35 John
20 0 Michael
警告: 汇总或其他 SET 作业已删除 Null 值。
(3 个资料列受到影响)
insert into @t
select 20,'1','John' union
select 30,'0','Allen' union
select 10,'1','Allen' union
select 15,'1','John' union
select 20,'0','Michael' union
select 25,'0','John'
select * from @t
select
isnull(sum(case mark when '0' then point end),0) point_0,
isnull(sum(case mark when '1' then point end),0) point_1,
Account
from @t
group by account
------------------------
(6 个资料列受到影响)
point mark Account
----------- ---- ----------
10 1 Allen
15 1 John
20 0 Michael
20 1 John
25 0 John
30 0 Allen
(6 个资料列受到影响)
point_0 point_1 Account
----------- ----------- ----------
30 10 Allen
25 35 John
20 0 Michael
警告: 汇总或其他 SET 作业已删除 Null 值。
(3 个资料列受到影响)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询