原創文章,轉載務必註明出處。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