求下面问题的SQL语句
现在有二个表,A(a,b) B(a,c)
A表里面,a和b是一对多的关系
B表里面,a和c是一对一的关系假设现在,查询A表的一个a的数据得出的结果是:
a    b
-----------
a1   b1
a1   b2
a1   b3
a1   b4
查询B表得出的数据是
a    c
----------
a1   c1我现在想要得到的结果是
a       d         c
-----------------------
a1  b1,b2,b3,b4   c1应该怎么写SQL语句?

解决方案 »

  1.   

    FYI:http://topic.csdn.net/u/20071113/12/a4e1b7d7-fead-44ff-97ab-eb40a2f38c2d.html?1134029824
      

  2.   

    可以考虑写个函数实现之
    create or replace function fun_test(
    A1 varchar2(10)
    )
    return varchar2(100)
    as
      cursor cur_test is
      select a,b from A where a = A1;
      Aresult varchar2(100);
    begin
      for rec_test in cur_test loop
        AResult := AREsult || rec_test.b||',';
      end loop;
      return AResult ;
    end;--然后可以使用如下查询语句获得结果
    select a,fun_test(a),c from B;
      

  3.   

    一个SQL?我想:把某个表多个行的值,用一行显示出来有点不现实,起码需要存储函数了
      

  4.   

    哈哈,,,,问题解决,,,多谢mantisXF的例子,,虽然不太一样,但是经过修改,,已经把问题解决了....把语句贴出来和大家一起学习学习......
    select distinct cc.a,cc.aass,B.b
    (
    select distinct bb.a,first_value(substr(aas, 2)) over(ORDER BY substr(aas, 2) DESC) aass from

    select aa.a, sys_connect_by_path(aa.b, ',') aas from

    select a,b,(rownum - 1) rowstart,rownum rowend 
    from A
    where A.a = 'a1'
    )aa
    start with aa.rowstart = 0
    connect by prior aa.rowend = aa.rowstart
    )bb
    )cc,B
    where cc.a = B.a
    ON Oracle 9i
      

  5.   

    最好不要用rownum哦,说不定会出事哦~~FYI:http://blog.csdn.net/mantisxf/archive/2007/07/19/1699067.aspx