table1 有两个字段:
fld1, fld2,
10秒 19:00
15秒 21:00
15秒 20:30
15秒 20:00
30秒 22:00写一个sql,取得如下结果集:
10秒(19:00)
15秒(20:00/20:30/21:00)
30秒(22:00)
要求15秒时,时间段按照20:00/20:30/21:00的顺序显示。下面的写法,没有实现排序功能,不算完成。
select fld1,replace(wm_concat(fld2),',','/') from table1 group by fld1

解决方案 »

  1.   

    用SQL先把table1的数据做个排序,做个子查询呗:
    select sub.fld1,replace(wm_concat(sub.fld2),',','/') 
    from (select fld1,fld2 from table1 order by fld1,fld2)sub
    group by sub.fld1;
      

  2.   

    是啊,用wm_concat,解决不了带有group by 的select语句。
      

  3.   

      可以试下下面这个语句
       with t as
    (select '10秒' m,'19:00' s from dual
     union all
     select '15秒' m,'21:00' s from dual
     union all
     select '15秒' m,'20:30' s from dual
     union all
     select '15秒' m,'20:00' s from dual
     union all
     select '30秒' m,'22:00' s from dual
    )
    select m||k from (
    select m,k,row_number() over (partition by m order by k desc ) rn from (
    select m,'('||replace(wm_concat(s) over (partition by m order by s),',','/')||')' k from t) ) where rn=1
      

  4.   

    select sub.fld1,replace(wm_concat(sub.fld2),',','/') 
    from (select fld1,fld2 from table1 order by fld1,fld2)sub
    group by sub.fld1;--这个应该可以,只有一组排序的话还是可以实现的
      

  5.   


    不行 试过了  貌似函数wm_concat不支持排序?