CREATEORREPLACEFUNCTION get_c2(tmp_c1 NUMBER) RETURNVARCHAR2 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>selectdistinct c1 ,get_c2(c1) cc2 fromtable;