欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle查询如何才能行转列?-sunziren

程序员文章站 2022-05-29 07:57:52
原创文章,转载务必注明出处。 今天工作的时候,碰到一个问题,涉及oracle行转列,用了半小时解决,因此在这里写个博客记录一下解决办法。 原数据库表的数据是: 想要达到的效果是: 经过思考,这是一个oracle行转列的操作,根据xn,qxdm,nj这三列值来分组查询所有的数据,把xn,qxdm,nj ......

  原创文章,转载务必注明出处。


  今天工作的时候,碰到一个问题,涉及oracle行转列,用了半小时解决,因此在这里写个博客记录一下解决办法。

  原数据库表的数据是:

  Oracle查询如何才能行转列?-sunziren

   想要达到的效果是:

  Oracle查询如何才能行转列?-sunziren

   经过思考,这是一个oracle行转列的操作,根据xn,qxdm,nj这三列值来分组查询所有的数据,把xn,qxdm,nj三列相同的数据看为一行。

  在百度上找了半小时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函数,问题至此解决,写下次过程以便他人参考。


  原创文章,转载务必注明出处。