举例:create table dali.test(a int,b varchar(10));
insert into dali.test values(1,'aa');
insert into dali.test values(1,'aa');
insert into dali.test values(3,'bb');
insert into dali.test values(3,'cc');
/create or replace function dali.get_value(p_id int)
return varchar2
is
cursor t_sor is select b from dali.test where a=p_id;
str varchar2(50);
begin
for v_sor in t_sor loop
  str:=str||v_sor.b||',';
end loop;
return substr(str,1,length(str)-1);
end ;
/
select a,dali.get_value(a) b from dali.test;

解决方案 »

  1.   

    create table dali.test(a int,b varchar(10));
    insert into dali.test values(1,'aa');
    insert into dali.test values(1,'aa');
    insert into dali.test values(3,'bb');
    insert into dali.test values(3,'cc');select a,bb from 
    (select a,rtrim(tt.b||','||
    lead(tt.b,1)over(partition by tt.a order by tt.b)) bb,
    row_number() over(partition by tt.a order by tt.b) x
    from t1 tt
    )
    where x=1;
      

  2.   

    刚才表名搞错了!
    create table t1(a int,b varchar(10));
    insert into t1 values(1,'aa');
    insert into t1 values(1,'aa');
    insert into t1 values(3,'bb');
    insert into t1 values(3,'cc');
    select a,bb from 
    (select a,rtrim(tt.b||','||
    lead(tt.b,1)over(partition by tt.a order by tt.b)) bb,
    row_number() over(partition by tt.a order by tt.b) x
    from t1 tt
    )
    where x=1;