不定列行列转换

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;
/

解决方案 »

  1.   

    create or replace pro 
    is
    vstr varchar2(400); 
    vlb temp.L2%type;
    cursor cur is select distinct L1 from temp;
    cursor curb(a varchar2) is select L2 from temp where L1=a;
    begin
    for currec in cur loop
       open curb(currec.L1);
       loop
       fetch curb into vlb;
       exit when curb%notfound;
           vstr:=vstr||' '||vlb;
       end loop;
      dbms_output.put_line(currec.L1||' '||vstr);
      close curb;
    end loop;end pro;
    你试试,我还没有调试;