Oracle行转列的方法—wmsys.wm_concat
2010-11-29 17:38
246 查看
在写一些SQL的时候,有时候会有需求把行转换成列或者把列转换成行;接下来,核桃博客会对在Oracle中作行列转换的方法做一些介绍;
首先是行转换列,比如将N行转换成1列拼接成字符串,方法有很多,其中有一些比较复杂,但如果你是Oracle 10G以上,那么我觉得最简洁的方法就是使用wmsys.wm_concat函数,非常简单明了;
假设有表格如下定义
create table t_row_col_change (n number, str varchar2(5));
先看下表格内容
SQL> select * from t_row_col_change;
N STR
———- ——————–
1 a
1 b
1 c
2 d
2 e
3 f
已选择6行。
这时候,你可以用wmsys.wm_concat函数将所有的str行转换成1列,如下
SQL> select wmsys.wm_concat(str) from t_row_col_change;
WMSYS.WM_CONCAT(STR)
——————————————————————————–
a,b,c,d,e,f
或者,你也可以按照某一列来分组,分别执行每组上的行转列,如下:
SQL> select n, wmsys.wm_concat(str) c from t_row_col_change group by n;
N C
———- ——————–
1 a,b,c
2 d,e
3 f
http://www.ll19.com/log/2010/06/04/115.html#
首先是行转换列,比如将N行转换成1列拼接成字符串,方法有很多,其中有一些比较复杂,但如果你是Oracle 10G以上,那么我觉得最简洁的方法就是使用wmsys.wm_concat函数,非常简单明了;
假设有表格如下定义
create table t_row_col_change (n number, str varchar2(5));
先看下表格内容
SQL> select * from t_row_col_change;
N STR
———- ——————–
1 a
1 b
1 c
2 d
2 e
3 f
已选择6行。
这时候,你可以用wmsys.wm_concat函数将所有的str行转换成1列,如下
SQL> select wmsys.wm_concat(str) from t_row_col_change;
WMSYS.WM_CONCAT(STR)
——————————————————————————–
a,b,c,d,e,f
或者,你也可以按照某一列来分组,分别执行每组上的行转列,如下:
SQL> select n, wmsys.wm_concat(str) c from t_row_col_change group by n;
N C
———- ——————–
1 a,b,c
2 d,e
3 f
http://www.ll19.com/log/2010/06/04/115.html#
相关文章推荐
- wmsys.wm_concat( ) 常用的使用方法
- 行转列方法,decode()与wmsys.wm_concat()
- oracle行转列函数WMSYS.WM_CONCAT 用法
- WMSYS.WM_CONCAT 突破4000字符的方法
- oracle行转列函数WMSYS.WM_CONCAT 用法
- Oracle行专列函数Listagg()和WMSYS.WM_CONCAT()
- Oracle行转列函数WMSYS.WM_CONCAT() 和 Listagg()
- oracle之wmsys.wm_concat
- WMSYS.WM_CONCAT行转列函数使用例子
- oracle 函数 WMSYS.WM_CONCAT 与对应 mysql 函数GROUP_CONCAT的用法
- 使用WMSYS.WM_CONCAT实现行转列!
- Oracle中的wmsys.wm_concat
- mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()
- SQL函数:WMSYS.WM_CONCAT行转列
- 警示:通过 wmsys.wm_concat 实现行列转换 clob
- wmsys.wm_concat 长度限制的问题
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- (转)WMSYS.WM_CONCAT 函数的用法
- SqlServer实现oracle10g的 wmsys.wm_concat()