select STUDENT.NO,
       listagg(STUDENT.NAME, ' ' ) within group (order by STUDENT.MARKS)
 from STUDENT
 group by NO此段sql文中的“ LISTAGG(STUDENT.NAME, ' ' ) WITHIN GROUP (order by STUDENT.MARKS)”
由于此次开发的oracle版本较低 ,不支持LISTAGG函数,求高手帮我用一般的sql语句实现,只要实现功能就行。 

解决方案 »

  1.   

    看去就不熟悉,果然是11g的函数,呵呵http://xpchild.blog.163.com/blog/static/10180985920108485721969/
      

  2.   

    用wm_concat这个看看。然后再replace逗号
      

  3.   

    用 wm_concat ,然后用replace替换逗号,如果是多行合并,要加上to_char。
    最后结果就是 :
    select NO,NAME
    (
    select STUDENT.NO NO,
           to_char(replace(WMSYS.WM_CONCAT(STUDENT.NAME) over (partition by   STUDENT.MARKS),',',' ')) NAME
     from STUDENT
    )
    group by NO,NAME结果和上面的sql文效果一样。不过感觉这种写法,查询了两次,但是在里层的查询又不能分组。期待更好的写法!