比如:现在有2个表 a 和 b。
a中字段:id
b中字段:id , nm 
a表一条记录关联b表中多条记录。如何取出跟父表 id关联的 b表所有的记录的一个nm, 作为一行显示。select a.id , b.nm
from a , b
where a.id = b.id 
这样检索的会返回与子表记录相同的行数,如何能将他们放在一行呢?

解决方案 »

  1.   

    假設數據是這樣
    1 a
    1 b
    1 c
    2 a
    2 b
    2 c
    3 a
    3 b
    3 c要變成
    1 a
    2 a
    3 a
    ?????
      

  2.   

    假设数据是
    a表
    id 
    1
    2
    3b表
    id    name
    1     aaa
    1     bbb
    1     ccc
    1     ddd能否一条记录显示为:id  nm1  nm2   nm3  nm4
    1   aaa  bbb   ccc  ddd
      

  3.   

    SELECT deptno, 
    LTRIM(MAX(SYS_CONNECT_BY_PATH(ename,','))KEEP (DENSE_RANK LAST ORDER BY curr),',')name
    FROM   
    ( SELECT deptno, ename, ROW_NUMBER()OVER(PARTITION BY deptno ORDER BY ename)curr, 
    (ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY ename) -1)prev
    FROM   emp )
    GROUP BY deptno
    CONNECT BY prev = PRIOR curr AND deptno = PRIOR deptno 
    START WITH curr = 1
    /
    可以看看这个例子