Oracle中进行行转列的方法

来源:互联网 发布:网络零售额 编辑:程序博客网 时间:2024/04/28 09:27

成绩表(CHENGJI)如下:

 XINGMINGKEMUCHENGJI  1张三语文89.00  2张三数学98.00  3张三英语88.00  4李四语文90.00  5李四数学89.00  6李四英语60.00  7王五数学66.00  8王五英语99.00


方法一、DECODE

Sql代码  收藏代码
  1. SELECT CJ.XINGMING,  
  2.        SUM(DECODE(CJ.KEMU, '语文', CJ.CHENGJI, 0)) 语文,  
  3.        SUM(DECODE(CJ.KEMU, '数学', CJ.CHENGJI, 0)) 数学,  
  4.        SUM(DECODE(CJ.KEMU, '英语', CJ.CHENGJI, 0)) 英语  
  5.   FROM CHENGJI CJ  
  6.  GROUP BY CJ.XINGMING  
 XINGMING语文数学英语  1张三899888  2王五06699  3李四908960

 


方法二、CASE WHEN

Sql代码  收藏代码
  1. SELECT CJ.XINGMING,  
  2.        SUMCASE WHEN CJ.KEMU = '语文' THEN CJ.CHENGJI ELSE 0 END ) 语文,  
  3.        SUMCASE WHEN CJ.KEMU = '数学' THEN CJ.CHENGJI ELSE 0 END ) 数学,  
  4.        SUMCASE WHEN CJ.KEMU = '英语' THEN CJ.CHENGJI ELSE 0 END ) 英语  
  5.   FROM CHENGJI CJ  
  6.  GROUP BY CJ.XINGMING   
 XINGMING语文数学英语  1张三899888  2王五06699  3李四908960
0 0
原创粉丝点击