Oracle 实现竖表转横表sql
来源:互联网 发布:中国联合网络通信市分 编辑:程序博客网 时间:2024/06/01 12:15
oracle SQL 实现竖表转横表
T_T_STUDENT表查询记录如下,要转成横表
姓名 课程 成绩
1 张飞 语文 80
2 张飞 数学 87
3 关羽 语文 97
4 张飞 英语 68
5 关羽 数学 53
6 刘备 语文 90
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
--用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
姓名 语文 数学 英语
1 刘备 90 94 92
2 关羽 97 53 95
3 张飞 80 87 68
区别如果条件是单一值时,用decode比较简便,如果判断条件比较复杂是用case when实现
- Oracle 实现竖表转横表sql
- Oracle 实现sql dateadd
- Oracle SQL递归实现
- sql server实现oracle序列
- Oracle SQL实现分页查询
- Oracle PL/SQL 实现分页
- Oracle 动态sql 实现方式
- Oracle SQL实现分页查询
- oracle SQL竖表转横表
- oracle SQL竖表转横表
- PL/SQL实现Oracle数据库任务调度
- 在oracle中实现分页查询sql
- PL/SQL实现Oracle数据库任务调度
- PL/SQL实现Oracle数据库任务调度
- Oracle中实现分页的SQL语句
- Oracle常见SQL分页实现方案介绍
- PL/SQL实现Oracle数据库任务调度
- Oracle常见SQL分页实现方案介绍
- 看看传说5亿行代码的Healthcare.gov网站的架构20131111
- 【润乾】V5动态统计图如何设计不同的柱子颜色
- HALCON基础知识
- ListView
- Java集合总结
- Oracle 实现竖表转横表sql
- JQuery datetimepicker中z-index默认为1的解决办法
- 算法导论第12章-搜索二叉树伪代码的C++程序全实现
- Binary Tree Level Order Traversal
- WPF 动态模拟CPU 使用率曲线图
- 转来看看呵呵
- java中HashMap的用法
- 周赛问题 福州 A - 代码问题
- 连接Mysql中文乱码处理