一、Oracle数据库:行转列
1、查询员工表中,员工姓名,员工所在部门编号
select deptno,ename from emp
查询结果:
2、根据deptno分组,合并ename数据用' , '分隔开,查询数据
select e.deptno,Listagg(e.ename,',')
within group (order by e.ename) as name
from emp e group by e.deptno
查询结果:
总结:
规范写法 : LISTAGG(字段, 连接符) WITHIN GROUP (ORDER BY 字段)
LISTAGG 返回的是一个varchar2类型的数据,最大字节长度为4000。如果连接长度过长。在这个时候,我们需要将LISTAGG函数改成XMLAGG函数。XMLAGG返回的类型为CLOB,最大字节长度为32767
一、Mysql数据库:行转列
1、(Mysql数据库)查询部门No 和 部门名称
select * from dept
查询结果:
2、根据deptno分组,合并dname数据,查询数据
SELECT deptno,group_concat(dname) FROM dept GROUP BY deptno
查询结果:
group_concat()函数可以把属于同一分组的多个行转化为一个列