原创文章,转载务必注明出处。sql
今天工做的时候,碰到一个问题,涉及oracle行转列,用了半小时解决,所以在这里写个博客记录一下解决办法。数据库
原数据库表的数据是:oracle
想要达到的效果是:函数
通过思考,这是一个oracle行转列的操做,根据xn,qxdm,nj这三列值来分组查询全部的数据,把xn,qxdm,nj三列相同的数据看为一行。spa
在百度上找了半小时sql,本身又调试了半个小时,终于把这个效果实现了,sql以下:调试
1 select * from (select xn,qxdm,nj,xk,gxsj,cbbb from test) t pivot( 2 max(t.cbbb) for xk in ( 3 '道德与法制' as 道德与法制, 4 '语文' as 语文, 5 '数学' as 数学, 6 '音乐' as 音乐, 7 '美术' as 美术, 8 '科学' as 科学, 9 '英语' as 英语, 10 '书法' as 书法, 11 '信息技术' as 信息技术 12 ) ) where 1=1
核心是利用了oracle的pivot函数,问题至此解决,写下次过程以便他人参考。code
原创文章,转载务必注明出处。blog