给一张表数据
姓名 科目 成绩
aa 语文 99
aa 数学 88
aa 英语 77
bb 语文 99
bb 数学 88
bb 英语 77
cc 语文 99
cc 数学 88
cc 英语 77
查询结果:
姓名 语文 数学 英语
aa 99 88 77
bb 99 88 77
cc 99 88 77
写出SQL语句(请各位熟悉者给个答案)
SELECt distinct a.姓名,a.成绩 as 语文,b.成绩 as 数学,c.成绩 as 英语
FROM shujubiao as a,shujubiao as b,shujubiao as c
where a.科目 = '语文' and b.科目 = '数学' and c.科目 = '英语';
select
[姓名],
[语文]=max(case when [成绩]='语文' then [成绩] else 0 end) ,
[数学]=max(case when [成绩]='数学' then [成绩] else 0 end),
[英语]=max(case when [成绩]='英语' then [成绩] else 0 end),
from 表
group by [姓名]
GO
http://download.csdn.net/source/1455863#acomment
select 姓名,语文=sum((case 科目 when '语文' then 成绩 else 0 end)),
数学=sum(case 科目 when '数学' then 成绩 else 0 end),
英语=sum(case 科目 when '英语' then 成绩 else 0 end) from 表名
group by 姓名
也就是个分组查询,一个人有语数外三科成绩,那就按姓名分组,也就是select * from 你的数据表 group by 姓名