(1)select mark, wm_concat(status) from DISSENT_INFO t GROUP BY mark; 查出来的数据 mark status 222 1007,1006333 1008,1008444 1008 (2) SQL> select deptno,listagg(ename,',')within group(order by sal)name from emp group by deptno; DEPT
众所周知,静态SQL的输出结构必须也是静态的.对于经典的行转列问题,如果行数不定导致输出的列数不定,标准的答案就是使用动态SQL, 到11G里面则有XML结果的PIVOT. 但是 oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了.上代码 直接点. CREATE OR REPLACEtype PivotImpl_shx as object( ret_type anytype, -- The return type of the table function stmt varc
pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)):unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名)):执行原理:将pivot函数或unpivot函数接在查询结果集的后面.相当于对结果集进行处理. 转换示例: 1.原始表数据: sql语句:select * from T_PIVOT_TEST_1 ; 2.用pivot函数进行行转列.其中用聚合函