目前有这样一张表: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;
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;