赞
踩
【Oracle 11g版本】
之前写过一个很简单的PIVOT的例子,这次补充一个UNPIVOT的例子,其实这个功能在日常应用中还是比较有用,以一个最简单的例子来说,数据库中有某个学生一学期的考试科目成绩,如下语句
- SELECT '罗飞' STU_NAME,
- '2001-2002' TERM,
- '90' 微积分,
- '88' 线性代数,
- '85' 数据结构,
- '70' 操作系统
- FROM DUAL
执行之后是如下结果:
现在需要找出这个学生2001到2002学期考试成绩得分最低的科目,因为传统的关系数据库是按照行存储,而MAX()和MIN()仅仅对列生效,所以,必然要进行一个行列转换,否则,只能通过写过程的方式来实现,还好,Oracle 11g开始提供了这个函数,UNPIVOT(),稍微调整一下代码如下:
- SELECT COURSE_MARK
- FROM (SELECT '
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。