ORACLE 10g 的行列转换(学生科目成绩)测试题

目前有这样一张表:SELECT * FROM HB_TEST;

    STU_ID STU_NAME   CRO_NAME        GRADE
---------- ---------- ---------- ----------
         1 张三       语文               68
         2 李四       语文               88
         3 王五       语文               72
         4 小张       语文               65
         1 张三       数学               90
         2 李四       数学               62
         3 王五       数学               94
         4 小张       数学               75
         1 张三       物理               50
         2 李四       物理               60
         3 王五       物理               70
         4 小张       物理               80

最后想得到下面的这一张表:

      学号  姓名              语文          数学          物理       总分
---------- ---------- ---------- ---------- ---------- ----------
         1 张三               68         90         50        208
         2 李四               88         62         60        210
         3 王五               72         94         70        236
         4 小张               65         75         80        220


经过oracle 10g 测试,实现的sql语句为:


SELECT STU_ID "学号",STU_NAME "姓名",
       SUM(CASE  WHEN CRO_NAME = '语文' THEN GRADE END) AS "语文",
       SUM(CASE  WHEN CRO_NAME = '数学' THEN GRADE END) AS "数学",
       SUM(CASE  WHEN CRO_NAME = '物理' THEN GRADE END) AS "物理",
       SUM(GRADE) AS "总分"
FROM HB_TEST
GROUP BY STU_ID,STU_NAME;


你可能感兴趣的:(oracle,sql)