Oracle行转列函数,列转行函数
warning:
这篇文章距离上次修改已过416天,其中的内容可能已经有所变动。
在Oracle数据库中,行转列通常可以使用CONCAT函数或者LISTAGG函数实现,列转行可以使用UNPIVOT操作。
行转列示例(使用LISTAGG):
SELECT deptno,
LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
FROM emp
GROUP BY deptno;列转行示例(使用UNPIVOT):
SELECT deptno, empname, empcount
FROM (SELECT deptno,
COUNT(*) AS empcount,
ename AS mgr
FROM emp
GROUP BY deptno, mgr)
UNPIVOT (empname FOR mgr IN (mgr AS 'Manager', ''));在这个列转行的例子中,我们将mgr字段的不同值转换成了不同的行,并且为每个mgr值计数。这里的UNPIVOT操作将mgr字段的值转换成了行,并且创建了一个新的字段empname来存储原始的ename值。注意,这里我们使用了一个虚拟的mgr值(空字符串)来确保UNPIVOT操作可以正常工作。
评论已关闭