ORACLE LISTAGG function

create table test(id number,name varchar2(20));
insert into test values(1,'a');
insert into test values(1,'b');
insert into test values(1,'c');
insert into test values(2,'d');
insert into test values(2,'e');
commit;

-- Before the 11g2 version, WM_CONTCAT was used to connect
SELECT ID, WM_CONCAT(NAME) NAME FROM TEST GROUP BY ID;
--After 11g2 version, use ListAgg
SELECT ID,
       LISTAGG(NAME, ',') WITHIN GROUP(ORDER BY NAME DESC) RANK --GROUP refers to the sorting after grouping
  FROM TEST
 GROUP BY ID;

SELECT ID,
       NAME,
       LISTAGG(NAME, ',') WITHIN GROUP(ORDER BY ID DESC) OVER(PARTITION BY ID) RANK
       --Do not use GROUP, use PARTITION grouping
  FROM TEST;

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326422542&siteId=291194637