加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

oracle SQL竖表转横表

发布时间:2021-12-28 11:36:47 所属栏目:教程 来源:互联网
导读: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.
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实现

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读