行列转换 listagg & wm_concat的安装
来源:互联网 发布:cad编程 编辑:程序博客网 时间:2024/05/17 01:23
在将Oracle8i升级到Oracle10g后,应用程序的部分视图编译不能通过。提示错误如下:
ORA-00904: "wm_concat":invalid identifier
查询DBA_OBJECTS视图,也未发现wm_concat的相关信息。
简单来说,用SQLPLUS执行下一下几个脚本就可以了。
- SQL>@$ORACLE_HOME\RDBMS\ADMIN\owmctab.plb;
- SQL>@$ORACLE_HOME\RDBMS\ADMIN\owmaggrs.plb
- SQL>@$ORACLE_HOME\RDBMS\ADMIN\owmaggrb.plb
今天才发现了wmsys.wm_concat这个有趣有用的函数,它的作用是以','链接字符。
例子如下:
SQL> create table idtable (id number,name varchar2(30));
Table created
SQL> insert into idtable values(10,'ab');
1 row inserted
SQL> insert into idtable values(10,'bc');
1 row inserted
SQL> insert into idtable values(10,'cd');
1 row inserted
SQL> insert into idtable values(20,'hi');
1 row inserted
SQL> insert into idtable values(20,'ij');
1 row inserted
SQL> insert into idtable values(20,'mn');
1 row inserted
SQL> select * from idtable;
ID NAME
---------- ------------------------------
10 ab
10 bc
10 cd
20 hi
20 ij
20 mn
6 rows selected
SQL> select id,wmsys.wm_concat(name) name from idtable
2 group by id;
ID NAME
---------- --------------------------------------------------------------------------------
10 ab,bc,cd
20 hi,ij,mn
SQL> select id,wmsys.wm_concat(name) over (order by id) name from idtable;
ID NAME
---------- --------------------------------------------------------------------------------
10 ab,bc,cd
10 ab,bc,cd
10 ab,bc,cd
20 ab,bc,cd,hi,ij,mn
20 ab,bc,cd,hi,ij,mn
20 ab,bc,cd,hi,ij,mn
6 rows selected
SQL> select id,wmsys.wm_concat(name) over (order by id,name) name from idtable;
ID NAME
---------- --------------------------------------------------------------------------------
10 ab
10 ab,bc
10 ab,bc,cd
20 ab,bc,cd,hi
20 ab,bc,cd,hi,ij
20 ab,bc,cd,hi,ij,mn
6 rows selected
个人觉得这个用法比较有趣.
SQL> select id,wmsys.wm_concat(name) over (partition by id) name from idtable;
ID NAME
---------- --------------------------------------------------------------------------------
10 ab,bc,cd
10 ab,bc,cd
10 ab,bc,cd
20 hi,ij,mn
20 hi,ij,mn
20 hi,ij,mn
6 rows selected
SQL> select id,wmsys.wm_concat(name) over (partition by id,name) name from idtable;
ID NAME
---------- --------------------------------------------------------------------------------
10 ab
10 bc
10 cd
20 hi
20 ij
20 mn
6 rows selected
select flag,
listagg(x, ',') within group(order by x) rx,
listagg(y, ',') within group(order by y) ry,
listagg(z, ',') within group(order by z desc) rz
from ttt
group by flag
order by flag;
- 行列转换 listagg & wm_concat的安装
- WMSYS.WM_CONCAT() 行列转换
- ORACLE中的listagg() 行列转换函数以及表的复制
- 使用WMSYS.WM_CONCAT函数实现行列转换
- 使用WMSYS.WM_CONCAT函数实现行列转换
- 使用WMSYS.WM_CONCAT函数实现行列转换
- oracle 行转列 listagg wm_concat
- wm_concat与listagg
- listagg与wm_concat
- WM_CONCAT LISTAGG函数,ORACLE列转行聚合的简单实现
- ORACLE分析函数(6)--使用listagg实现行列转换
- Oracle11.2新特性之listagg函数 (行列转换)
- Oracle数据库合并行记录,【WMSYS.WM_CONCAT】 函數的用法 ----【行列转换】
- WMSYS.WM_CONCAT的用法 行列转置
- LISTAGG(替代wmsys.wm_concat)
- Oracle ListAgg 和 wm_concat函数
- oracle wm_concat 和 listagg函数
- oracle listagg和wm_concat函数
- 百练 1013 Counterfeit Dollar
- hdu 1548 BFS
- ubuntu13.04下安装jdk eclipse ADT
- 百练 2910 提取数字
- uva 10878 Decode the tape (简单题)
- 行列转换 listagg & wm_concat的安装
- 百练 2682 循环移动
- 如何将Matlab代码带颜色无乱码粘贴到word或网页中
- 百练 2926 算术运算
- 百练 2000 Gold Coins
- 翻译电话号码
- 网站计数器——Java实现
- 百练 2722 学分绩点
- 百练 2885 计算反序数