OPER@tl>select * from test;TELNO R OPERS -------------------- - ---------- 7907777 a 1001 7907777 b 1002 7907777 c 1003 7907778 a 1003 7907778 b 1002 7907778 c 1001已选择6行。OPER@tl>select telno,wmsys.wm_concat(opers) 2 from ( 3 select * from test order by telno,rules,opers) 4 group by telno;TELNO WMSYS.WM_CONCAT(OPERS) -------------------- ------------------------------ 7907777 1001,1002,1003 7907778 1003,1002,1001OPER@tl>
楼上的两位和我想的一样但是是必须所有的列都排序 order by 优惠规则, 启用日期,失效日期,操作日期,操作员还是 只 order by 优惠规则就可以呢我的最终结果里要求多个列的里字符串的顺序都跟优惠规则的顺序一样才行
是的,我也看过,不能保证二个分组的排序一模一样 估计和group 会重新排序有关系
用over(partition by xx order by xxx),在最外面在套一层, 还需要row_number(),可以解决这个问题。
WMSYS.WM_CONCAT(目标字段) over(partition BY 分组 order by 排序)把结果里的逗号替换成"、" replace(WMSYS.wm_concat(目标字段),',','、')
-------------------- - ----------
7907777 a 1001
7907777 b 1002
7907777 c 1003
7907778 a 1003
7907778 b 1002
7907778 c 1001已选择6行。OPER@tl>select telno,wmsys.wm_concat(opers)
2 from (
3 select * from test order by telno,rules,opers)
4 group by telno;TELNO WMSYS.WM_CONCAT(OPERS)
-------------------- ------------------------------
7907777 1001,1002,1003
7907778 1003,1002,1001OPER@tl>
order by 优惠规则, 启用日期,失效日期,操作日期,操作员还是
只 order by 优惠规则就可以呢我的最终结果里要求多个列的里字符串的顺序都跟优惠规则的顺序一样才行
估计和group 会重新排序有关系
还需要row_number(),可以解决这个问题。