oracle SQL竖表转横表

本文详细介绍了如何使用ORACLE SQL实现竖表转横表的操作,包括利用decode和case when语句的方法,并通过实例展示了转换过程及结果对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle SQL 实现竖表转横表

T_T_STUDENT表查询记录如下,要转成横表

姓名 课程 成绩
1 张飞 语文 80
2 张飞 数学 87
3 关羽 语文 97
4 张飞 英语 68
5 关羽 数学 53
6 刘备 语文 90

方法一:
--用decode实现,
SELECT T.NAME,
SUM(DECODE(T.Course, '语文', T.Score)) 语文,
SUM(DECODE(T.Course, '数学', T.Score)) 数学,
SUM(DECODE(T.Course, '英语', T.Score)) 英语
FROM T_T_STUDENT T
GROUP BY T.NAME

方法二:
--用case when 实现
SELECT T.NAME,
SUM(CASE T.Course WHEN '语文' THEN T.Score ELSE 0 END) 语文,
SUM(CASE T.Course WHEN '数学' THEN T.Score ELSE 0 END) 数学,
SUM(CASE T.Course WHEN '英语' THEN T.Score ELSE 0 END) 英语
FROM T_T_STUDENT T
GROUP BY T.NAME

输出结果如下:
姓名 语文 数学 英语
1 刘备 90 94 92
2 关羽 97 53 95
3 张飞 80 87 68

区别如果条件是单一值时,用decode比较简便,如果判断条件比较复杂是用case when实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值