http://www.cublog.cn/opera/showart.php?blogid=14788&id=141763
Quote:
[Q]如何?行列轉換 [A] 1、固定列數的行列轉換 如 student subject grade --------------------------- student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 …… 轉換為 語文 數學 英語 student1 80 70 60 student2 90 80 100 …… 語句如下: select student,sum(decode(subject,'語文', grade,null)) "語文", sum(decode(subject,'數學', grade,null)) "數學", sum(decode(subject,'英語', grade,null)) "英語" from table group by student 2、不定列行列轉換 如 c1 c2 -------------- 1 我 1 是 1 誰 2 知 2 道 3 不 …… 轉換為 1 我是誰 2 知道 3 不 這一類型的轉換必須藉助於PL/SQL來完成,這裡給一個例子 CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER) RETURN VARCHAR2 IS Col_c2 VARCHAR2(4000); BEGIN FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP Col_c2 := Col_c2||cur.c2; END LOOP; Col_c2 := rtrim(Col_c2,1); RETURN Col_c2; END; / SQL> select distinct c1 ,get_c2(c1) cc2 from table;即可 |