数据库行转列

本文介绍如何使用SQL查询将数据库表中的行数据转换为列格式,通过示例展示了如何提取并聚合特定字段的数据,形成姓名、语文、数学、英语等列的输出结果。

数据库行转列

name course score 
A   语文   88 
B   数学   87 
C   英语   67 
D   语文   90 
这是一张数据库表中的字段,写一个sql语句查处如下结果: 
姓名   语文  数学  英语 
--------------------- 
A    88    87    67 
B    90    86    89 

select name as 姓名,  
sum(case when course='语文' then score end) as 语文,  
sum(case when course='数学' then score end) as 数学,  
sum(case when course='物理' then score end) as 物理  
from t_Score group by name  

还可以参考下面的方式: 
select 
    decode(t.grade_id,1,'一年级',2,'二年级',3,'三年级') 年级, 

    sum(decode(t.subject_name,’语文’,t.max_score,0)) 语文, 
    sum(decode(t.subject_name,'数学',t.max_score,0)) 数学, 
    sum(decode(t.subject_name,'英语',t.max_score,0)) 英语 
from 
    test_table t 
group by 
    t.grade_id 
参考一下/ 


转载于:https://my.oschina.net/messi31/blog/536334

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值