原創文章,轉載務必註明出處。 今天工作的時候,碰到一個問題,涉及oracle行轉列,用了半小時解決,因此在這裡寫個博客記錄一下解決辦法。 原資料庫表的數據是: 想要達到的效果是: 經過思考,這是一個oracle行轉列的操作,根據xn,qxdm,nj這三列值來分組查詢所有的數據,把xn,qxdm,nj ...
原創文章,轉載務必註明出處。
今天工作的時候,碰到一個問題,涉及oracle行轉列,用了半小時解決,因此在這裡寫個博客記錄一下解決辦法。
原資料庫表的數據是:
想要達到的效果是:
經過思考,這是一個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函數,問題至此解決,寫下次過程以便他人參考。
原創文章,轉載務必註明出處。