根据oracle中的两列聚合重复项

时间:2015-05-04 07:18:23

标签: sql oracle

我有一张如下表格

EMPID   EMPNAME MANAGERID
1       E1       M1
2       E2       M2
1       E3       M1

需要以下预期数据。

EMPID   EMPNAME MANAGERID
1       E1,E3    M1
2       E2       M2

即消除基于EMPID和MANAGERID的重复项并更新EMPNAME,如图所示。

1 个答案:

答案 0 :(得分:2)

解决方案是使用WM_CONCAT

SELECT
          EMPID,
          WM_CONCAT(EMPNAME) ENMPNAME,
          MANAGERID
FROM 
          <table name>
GROUP BY
          EMPID,
          MANAGERID;

另一种解决方案(11gR2 +):

SELECT
          EMPID,
          LISTAGG(EMPNAME, ',') WITHIN GROUP (ORDER BY EMPID, MANAGERID) EMPNAME,
          MANAGERID
FROM 
          <table name>
GROUP BY
          EMPID,
          MANAGERID;