在使用wm_concat的时候,会遇到结果并没有按照表中顺序的问题,为什么会出现这种情况,还不太清楚,但已有解决办法。
首先,数据源如图一所示。week表示星期几,比如当week=1的时候,表示星期一有四个开始时间和结束时间的记录,
想要得到图二的效果,表示按week分组,把周X的时间段的多列转成一行。


如果直接使用 以下语句,得到的结果将是图二所示
select week,wm_concat((kssj||'~'||jssj))sjd from tablename group by week
哪怕先对表排序,这样也是没用的
select week,wm_concat((kssj||'~'||jssj))sjd from (select * from tablename order by id) group by week
解决方案:
select a.week,max(key) sjd from(select week, wm_concat((kssj||'~'||jssj))
over (partition by week order by id) key from tablename)a group by a.week
结果:
