主表:personid    
----- 
001     子表:scoreid    
----- 
001     
002    
003    需要得到结果:主表id   子表id
------ ---------------
0011      001,002,003

解决方案 »

  1.   

    主表:personid    
    ----- 
    001     子表:score主表id 子表id    
    ----- -------
    001     001     
    001     002  
    001     003  需要得到结果:主表id   子表id
    ------ ---------------
    0011      001,002,003
      

  2.   

    这个意思吗?
    select a.id,wm_concat(b.子表id)子表id from person a,score b
      where a.id=b.主表id
      group by a.id
      

  3.   

    刚才那个不行吗?不用 wmsys.wm_concat和其他函数,似乎只能用sql拼接了
      

  4.   

    如果不需要主表中其他字段的话
    关联都不用
    直接select 主表id,wm_concat(子表id) from score就行
    不知我是否有哪儿没理解正确的
      

  5.   

    啊?系统自带的函数都不能用
    why
      

  6.   

    子表score还应该有一个外键person_id才可以,要是这样的话在10g下可以用COLUMN "子表id" FORMAT a50SELECT person_id, wmsys.wm_concat(id)
      FROM score
     GROUP BY person_id;
      

  7.   

    那用这个吧
    这个函数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