比如:现在有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
这样检索的会返回与子表记录相同的行数,如何能将他们放在一行呢?
a中字段:id
b中字段:id , nm
a表一条记录关联b表中多条记录。如何取出跟父表 id关联的 b表所有的记录的一个nm, 作为一行显示。select a.id , b.nm
from a , b
where a.id = b.id
这样检索的会返回与子表记录相同的行数,如何能将他们放在一行呢?
1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 b
3 c要變成
1 a
2 a
3 a
?????
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
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
/
可以看看这个例子