首页 > 代码库 > oracle 行列转换的运用
oracle 行列转换的运用
问题:
员工表: A(E_ID,NAME,) 部门表: B(D_ID,D_NAME) 员工与部门关系:C(ID,E_ID,D_ID)
SELECT A.E_ID,A.NAME ,B.D_NAME FROM A INNER JOIN C ON A.E_ID=C.E_ID INNER JOIN B ON B.D_ID=C.D_ID;
这样查处的记录会出现,
1,张三,研发部
1,张三,市场部
2,李四,销售部
我想查询结果显示成这样:
1,张三,研发部|市场部 2,李四,销售部 3 ...
SQL 怎么写?
解:
方法1
SELECT A.E_ID, A.NAME, REPLACE(WM_CONCAT(B.D_NAME), ‘,‘, ‘|‘) D_NAME FROM A INNER JOIN C ON A.E_ID = C.E_ID INNER JOIN B ON B.D_ID = C.D_ID GROUP BY A.E_ID, A.NAME
方法2:
SELECT A.E_ID, A.NAME, listagg(B.D_NAME,‘,‘) within GROUP (ORDER BY B.D_NAME)D_NAME FROM A INNER JOIN C ON A.E_ID = C.E_ID INNER JOIN B ON B.D_ID = C.D_ID GROUP BY A.E_ID, A.NAME
oracle 行列转换的运用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。