SQL语句查询结果由行变为列[辉]

Q: 
用SQL语句,把表中的数据由行变为列.

查询前:
ID 姓名 科目 分数
1 张三 语文 65
2 张三 数学 85
3 张三 外语 75
4 李四 语文 90
5 李四 数学 60
6 李四 外语 50


查询后:
姓名 语文 数学 外语
李四 90 60 50
张三 65 85 75

A:
1.先建表.
create table SCORETABLE
(
 ID int not null primary key,
 NAME varchar(50),
 SUBJECT varchar(50),
 SCORE int null
);


2.添加数据.
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(1, '张三', '语文', 70);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(2, '张三', '数学', 85);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(3, '张三', '外语', 75);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(4, '李四', '语文', 90);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(5, '李四', '数学', 60);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(6, '李四', '外语', 50);


3.用SQL实现.
select NAME as '姓名',
    sum(case SUBJECT when '语文' then SCORE else 0 end) as '语文',
    sum(case SUBJECT when '数学' then SCORE else 0 end) as '数学',
    sum(case SUBJECT when '外语' then SCORE else 0 end) as '外语'
from SCORETABLE
group by NAME


这就做完了.主要就是这个SQL语句.其实很简单. 

在SQL2000上测试通过.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值