oracle SQL竖表转横表

来源:互联网 发布:淘宝情趣内衣买家秀 编辑:程序博客网 时间:2024/06/06 01:16
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 TGROUP 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 TGROUP BY T.NAME

 

 
输出结果如下:
      姓名     语文  数学  英语
1     刘备     90     94     92
2     关羽     97     53     95
3     张飞     80     87     68
 
 区别如果条件是单一值时,用decode比较简便,如果判断条件比较复杂是用case when实现
0 0
原创粉丝点击