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
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
select sub.fld1,replace(wm_concat(sub.fld2),',','/')
from (select fld1,fld2 from table1 order by fld1,fld2)sub
group by sub.fld1;
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
from (select fld1,fld2 from table1 order by fld1,fld2)sub
group by sub.fld1;--这个应该可以,只有一组排序的话还是可以实现的
不行 试过了 貌似函数wm_concat不支持排序?