这个意思吗? select a.id,wm_concat(b.子表id)子表id from person a,score b where a.id=b.主表id group by a.id
刚才那个不行吗?不用 wmsys.wm_concat和其他函数,似乎只能用sql拼接了
如果不需要主表中其他字段的话 关联都不用 直接select 主表id,wm_concat(子表id) from score就行 不知我是否有哪儿没理解正确的
啊?系统自带的函数都不能用 why
子表score还应该有一个外键person_id才可以,要是这样的话在10g下可以用COLUMN "子表id" FORMAT a50SELECT person_id, wmsys.wm_concat(id) FROM score GROUP BY person_id;
那用这个吧 这个函数9i就能用了 select 主表id,substr(max(sys_connect_by_path(子表id,',')),2)子表id from ( select t.*,row_number()over(partition by 主表id order by 子表id)rn from score t) start with rn=1 connect by prior rn=rn-1 group by 主表id order by 主表id
-----
001 子表:score主表id 子表id
----- -------
001 001
001 002
001 003 需要得到结果:主表id 子表id
------ ---------------
0011 001,002,003
select a.id,wm_concat(b.子表id)子表id from person a,score b
where a.id=b.主表id
group by a.id
关联都不用
直接select 主表id,wm_concat(子表id) from score就行
不知我是否有哪儿没理解正确的
why
FROM score
GROUP BY person_id;
这个函数9i就能用了
select 主表id,substr(max(sys_connect_by_path(子表id,',')),2)子表id
from (
select t.*,row_number()over(partition by 主表id order by 子表id)rn
from score t)
start with rn=1
connect by prior rn=rn-1
group by 主表id
order by 主表id