您的位置:首页 > 数据库 > Oracle

oracle SQL竖表转横表

2013-11-03 10:35 387 查看
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实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: