sql行变列

已知:数据库
name       lesson       score
张三       语文           90
李四       数学           94
王五       英语           87
张三       数学           77
李四       语文           80
王五       数学           68


求:如何输出下面的列表(行变列)
            语文         数学         英语
张三     90             94      
李四     80             94    
王五                    68            87

答案:
select name,
(select score from t_test where name=o.name and lesson='语文') 语文,
(select score from t_test where name=o.name and lesson='数学') 数学,
(select score from t_test where name=o.name and lesson='英语') 英语
from t_test o group by name

这只是一个静态的sql语句,也就是说,语文,数学和英语这三门课程我们是假定知道的。如果不知道呢?那就只能动态的拼sql语句了。先从数据库中取这些课程然后再拼sql。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值