wm_concat函数的排序问题
来源:互联网 发布:外国社交软件 编辑:程序博客网 时间:2024/05/19 16:33
wm_concat在行转列的时候非常有用,但在行转列的过程中的排序问题常常难以控制。
可见下面例子:
准备测试表:
drop table t;
create table t (n number,m number);
insert into t values(1,1);
insert into t values(5,3);
insert into t values(3,3);
insert into t values(6,5);
insert into t values(7,2);
insert into t values(2,2);
insert into t values(0,1);
insert into t values(11,1);
insert into t values(15,3);
insert into t values(13,3);
insert into t values(16,5);
insert into t values(17,2);
insert into t values(12,2);
insert into t values(10,1);
commit;
SQL> select * from t order by 2,1;
N M
———- ———-
0 1
1 1
10 1
11 1
2 2
7 2
12 2
17 2
3 3
5 3
13 3
15 3
6 5
16 5
测试wm_concat后的顺序:
测试1:
SQL> select m,wm_concat(n) from t group by m;
M WM_CONCAT(N)
———- ——————————————————————————–
1 11,0,1,10
2 17,2,7,12
3 15,3,5,13
5 16,6
可见wm_concat后的顺序并没有按大->小,或小->大的顺序。
测试2:
–参考网上一些解决思路
SQL> select m,wm_concat(n)
2 from (select n,m from t order by m,n )
3 group by m;
M WM_CONCAT(N)
———- ——————————————————————————–
1 0,11,10,1
2 2,17,12,7
3 3,15,13,5
5 6,16
可见顺序问题还是没有解决
最终解决思路:
SQL> select m, max(r)
2 from (select m, wm_concat(n) over (partition by m order by n) r from t)
3 group by m ;
M MAX(R)
———- ——————————————————————————–
1 0,1,10,11
2 2,7,12,17
3 3,5,13,15
5 6,16
- wm_concat函数的排序问题
- wm_concat函数的排序问题
- wm_concat函数的排序问题
- wm_concat排序问题
- wm_concat排序问题
- 关于Oracle函数wm_concat的一些问题
- 重写Oracle的wm_concat函数,以自定义分隔符、排序
- oracle的wm_concat函数
- oracle 中自带函数wm_concat排序
- WMSYS.WM_CONCAT 函数的用法
- oracle wm_concat函数的使用
- 强大的oracle函数wm_concat
- oracle wm_concat函数的使用
- wm_concat函数
- wm_concat函数
- wm_concat函数
- wm_concat函数
- wm_concat函数
- 托业资料
- 不懂类,对象,包,接口,继承,多态的C++高手
- asp.net 验证码类
- asp.net 工具类 XMLProcess
- Silverlight判断当前模式是OOB还是Web
- wm_concat函数的排序问题
- java线程入门学习1
- Oracle函数wmsys.wm_concat的使用
- 点滴
- 之间的差最小
- DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
- 用例图 extend include
- linux g++ 库文件搜索路径
- 时间复杂度和空间复杂度