oracle SQL竖表转横表

时间:2021-05-02

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实现

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章