原創文章,轉載務必注明出處,
今天作業的時候,碰到一個問題,涉及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函式,問題至此解決,寫下次程序以便他人參考,
小插曲,專案中用了這個Sql后,一直報錯,可在PLSQL能夠執行,經過檢查發現是資料源druid 1.1.18版本不支持Oracle For關鍵字,升級成1.1.21就好了,
原創文章,轉載務必注明出處,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/18416.html
標籤:Oracle
