Oracle PIVOT 行轉列方法


數據庫中業種的存儲如下圖:

SELECT * FROM M_TORIHIKISAKI_GYOSYU

其中GYIUSYU_CD字段代表不同的業種

而畫面需要實現下圖所示樣式:(將每條數據的業種橫向展開顯示)

這種情況下便可以使用PIVOT方法,代碼如下:

SELECT 
C1,
C2,
C3,
C4,
C5,
C6,
C7,
C8,
C9,
C10,
C11,
C12
FROM M_TORIHIKISAKI_GYOSYU
PIVOT(MAX(GYIUSYU_CD)
FOR GYIUSYU_CD IN(1 AS C1,
2 AS C2,
3 AS C3,
4 AS C4,
5 AS C5,
6 AS C6,
7 AS C7,
8 AS C8,
9 AS C9,
10 AS C10,
11 AS C11,
12 AS C12)
)

其執行結果為:

為實現頁面效果,可使用decode方法,SQL片段如下

  DECODE(C1,1 ,'true','false') AS C1 
,DECODE(C2,2 ,'true','false') AS C2 
,DECODE(C3,3 ,'true','false') AS C3 
,DECODE(C4,4 ,'true','false') AS C4 
,DECODE(C6,6 ,'true','false') AS C6 
,DECODE(C7,7 ,'true','false') AS C7 
,DECODE(C8,8 ,'true','false') AS C8 
,DECODE(C9,9 ,'true','false') AS C9 
,DECODE(C10,10 ,'true','false') AS C10
,DECODE(C11,11 ,'true','false') AS C11 
,DECODE(C12,12 ,'true','false') AS C12

 

這樣,檢索后的結果就是true 或 false ,然后將檢索結果賦給checkbox,就能按要求顯示了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM