2014/08/07

行列轉置SQL語法(Only Oracle Tested)

好久沒有更新網誌,結果是來更新一篇筆記,我好認真(誤)。





  參考資料:asktom.oracle.com

  一般轉置的SQL寫法都支援數字,不外乎使用MAX、MIN、SUM、COUNT等,而其中最常用的就是SUM,但當欄位內容不是數字而是文字時,使用SUM就會出現問題,上網GOOGLE了之後,大致上整理出一種寫法,特別筆記下來。


SELECT Field1,
       MAX(DECODE(R,1,Field2,NULL)) A1,
       MAX(DECODE(R,1,Field3,NULL)) A2,
       MAX(DECODE(R,2,Field2,NULL)) A3,
       MAX(DECODE(R,2,Field3,NULL)) A4
  FROM (SELECT ROW_NUMBER() OVER(PARTITION BY Field1 ORDER BY Field2 DESC NULLS LAST) R,
               Field1, Field2, Field3
          FROM TABLE_A
         WHERE 1 = 1
           AND Field1 = '241101')
GROUP BY Field1


沒有留言:

張貼留言