我有表 Table1
 A        B
 1        天
 1        地
 2        月
 2        日
 3        火
 3        水
 3        金
 3        木 求用SELECT 实现多行合并为一行的SQL写法 效果:A      B     C     D      E    
1      天    地    null  null
2      月    日    null  null
3      火    水    金     木

解决方案 »

  1.   

    --不定列转换
             C1 C2
    ---------- ----------
             1 我
             1 是
             1 谁
             2 知
             2 道
             3 不
    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; 
    / 结果:
             C1 C2
    ---------- ----------
             1 我是谁
             2 知道不