假设我有一张用户表user和一张住址表address,它们是1:n的关系,即一个用户可以有多个地址,那么如下这句sql将返回所有用户的所有住址,也即一个用户的2个地址会对应2行记录:
select u.username,a.addressDetail
from user u
left outter join address a on a.userid=u.userid
但是目前我想要得到另一个结果,即一个用户只返回一行记录,其住址那一列显示用逗号分隔的不同地址。
请教高手,在oracle里面有没有什么特别的函数,能够让我用一句sql完成这件事?谢谢了。

解决方案 »

  1.   

    这个函数oracle没有现成的,要自己编
      

  2.   

    这个函数oracle没有现成的,要自己编
      

  3.   

    这个函数oracle没有现成的,要自己编
      

  4.   

    这个函数oracle没有现成的,要自己编
      

  5.   

    这个函数oracle没有现成的,要自己编
      

  6.   

    oracle 10g的话
    select u.username,wmsys.wm_concat(a.addressDetail)
    from user u
    left outter join address a on a.userid=u.userid
    group by u.username
      

  7.   

    9i和10g的方法参见:
    http://topic.csdn.net/u/20080824/19/3f94dbc6-856a-4193-b831-accde553763f.html
      

  8.   

    oracle 9i的话
    参照此帖
    http://topic.csdn.net/u/20080505/11/a0958b42-d938-465f-972a-0f61a2969c97.html?seed=491226048
    3楼的回复.
      

  9.   

    9I参考此贴,用sys_connect_by_path实现
    http://topic.csdn.net/u/20080505/11/a0958b42-d938-465f-972a-0f61a2969c97.html?seed=491226048