[SQL] 오라클에서 SELECT 문의 결과 목록을 쉼표로 구분 [중복]
SQL오라클에서 SELECT 문의 결과 목록을 쉼표로 구분 [중복]
나는 "사람"이라는 이름의 테이블이 있습니다. 그것은 사람의 ID와 그것의 부모 ID를 포함합니다 (단 하나의 부모는 가능하다). 사람 ID 및 두 번째 칼럼 - - 그것의 아이들 ID의 목록 쿼리의 결과로, 내가 먼저 열이있는 테이블을합니다. 이 정확히 어떻게 할까? 나는 listagg 기능에 대해 읽었습니다,하지만 내 목적에 적합한 있는지 확실하지 않습니다. 그리고이 쿼리는 빈 두 번째 열을 생성합니다 :
, t1.id 선택 (사람 T2에서 t2.id을 선택 여기서 t2.parent_id = t1.id)를 인 T1로부터 여기서 t1.status = '부모';
해결법
-
==============================
1.
SELECT parent_id, RTRIM(XMLAGG(XMLELEMENT(e,child_id || ',')).EXTRACT('//text()'),',') AS "Children" FROM parentChildTable WHERE parent_id = 0 GROUP BY parent_id
또는
SELECT parent_id, LISTAGG(child_id, ',') WITHIN GROUP (ORDER BY child_id) AS "Children" FROM parentChildTable WHERE parent_id = 0 GROUP BY parent_id
-
==============================
2.LISTAGG의 마크 구현은 확실히 오라클 11GR2 갈 수있는 방법입니다. 대한 11GR1 또는 Oracle (10) 대신 정확히 같은 방식으로 wmsys.wm_Concat을 사용할 수 있습니다 들어 (필요 수있는 권한은 DBA에서 부여)
LISTAGG의 마크 구현은 확실히 오라클 11GR2 갈 수있는 방법입니다. 대한 11GR1 또는 Oracle (10) 대신 정확히 같은 방식으로 wmsys.wm_Concat을 사용할 수 있습니다 들어 (필요 수있는 권한은 DBA에서 부여)
-
==============================
3.그것을 접근하는 또 다른 방법은 ...
그것을 접근하는 또 다른 방법은 ...
SELECT parent_id,max(child_list) FROM ( SELECT parent_id,sys_connect_by_path(child_number,',') child_list FROM ( SELECT parent_id, id, row_number() over (partition by parent_id order by id) child_number FROM person WHERE parent_id IS NOT NULL ) START WITH child_number=1 CONNECT BY parent_id = PRIOR parent_id AND child_number = PRIOR child_number + 1 ) GROUP BY parent_id ORDER BY parent_id ;
-
==============================
4.) (wmsys.wm_concat을 선택 FROM;
) (wmsys.wm_concat을 선택 FROM;
그것은 논쟁, 그러나 그것은 작동 - https://forums.oracle.com/forums/thread.jspa?threadID=2205545
from https://stackoverflow.com/questions/5324996/comma-separated-list-as-a-result-of-select-statement-in-oracle by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 상호 친구가 가입하여 SQL (MySQL의) (0) | 2020.07.06 |
---|---|
[SQL] SQL 서버 데이터 루프 2005 재귀 쿼리는 - 그것이 가능할까요? (0) | 2020.07.06 |
[SQL] 엑셀 2013 이상 65536 행 오류 쿼리 (0) | 2020.07.06 |
[SQL] PHP와 SQL 경로 저장 파일을 업로드 (0) | 2020.07.06 |
[SQL] 여러 데이터 세트를 기반으로 BIRT 보고서를 만드는 방법 (0) | 2020.07.06 |