1、创建demo表
CREATE TABLE DEMO_STUDENT (
T_NAME VARCHAR2(10 CHAR),
T_MON NUMBER,
T_SCORE NUMBER
);
COMMENT ON TABLE DEMO_STUDENT IS '学生每月月考总分表';
COMMENT ON COLUMN DEMO_STUDENT.T_NAME IS '姓名';
COMMENT ON COLUMN DEMO_STUDENT.T_MON IS '月份';
COMMENT ON COLUMN DEMO_STUDENT.T_SCORE IS '分数';
2、行转列
SELECT
T_NAME ,
MAX(CASE WHEN T_MON = '1' THEN T_SCORE END) AS "1月",
MAX(CASE WHEN T_MON = '2' THEN T_SCORE END) AS "2月",
MAX(CASE WHEN T_MON = '3' THEN T_SCORE END) AS "3月",
MAX(CASE WHEN T_MON = '4' THEN T_SCORE END) AS "4月",
MAX(CASE WHEN T_MON = '5' THEN T_SCORE END) AS "5月",
MAX(CASE WHEN T_MON = '6' THEN T_SCORE END) AS "6月",
MAX(CASE WHEN T_MON = '7' THEN T_SCORE END) AS "7月",
MAX(CASE WHEN T_MON = '8' THEN T_SCORE END) AS "8月",
MAX(CASE WHEN T_MON = '9' THEN T_SCORE END) AS "9月",
MAX(CASE WHEN T_MON = '10' THEN T_SCORE END) AS "10月",
MAX(CASE WHEN T_MON = '11' THEN T_SCORE END) AS "11月",
MAX(CASE WHEN T_MON = '12' THEN T_SCORE END) AS "12月"
FROM DEMO_STUDENT
GROUP BY T_NAME
3、列转行使用UNION ALL