列转行的实现方法

数据库列转行实现方法

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 ("语文","数学","英语")
)

当使用中文字段命名时,后续使用时需要加符号【“”】就能识别
结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值