数据库列转行实现方法
mysql中列转行
问题描述:每位学生成绩展示,原先是每门学科作为字段展示,现在将学科字段转为行,进行展示;
// 使用UNION ALL 实现
SELECT NAME ,CLASS ,'语文' SUBJECT ,`语文` GRADE FROM STUDENTS WHERE `语文` IS NOT NULL
UNION ALL
SELECT NAME ,CLASS ,'数学' SUBJECT ,`数学` GRADE FROM STUDENTS WHERE `数学` IS NOT NULL
UNION ALL
SELECT NAME ,CLASS ,'英语' SUBJECT ,`英语` GRADE FROM STUDENTS WHERE `英语` IS NOT NULL
当使用中文字段命名时,后续使用时需要加符号【`】就能识别
还有用CASE WHEN 方法实现的,这涉及到复杂的条件判断,实际一般不会使用到
结果如下:
oracle中列转行
使用unpivot实现
// 使用UNPIVOT实现
SELECT
NAME
,CLASS
,SUBJECT
,GRADE
FROM STUDENTS_ON
UNPIVOT(
GRADE FOR SUBJECT IN ("语文","数学","英语")
)
当使用中文字段命名时,后续使用时需要加符号【“”】就能识别
结果如下: