본문 바로가기

[오라클 레퍼런스 함수] XMLAGG - XML 단편을 집계하여 반환

by ㅇㅍㅍ 2023. 9. 5.
[오라클 레퍼런스 함수] XMLAGG - XML 단편을 집계하여 반환
728x90

 

XMLAGG

 

구문

XMLAGG(XMLType_instance [ order_by_clause ])

 

목적

XMLAgg는 집계 함수입니다. XML 단편들의 컬렉션을 가져와 집계된 XML 문서를 반환합니다. null을 반환하는 인수는 결과에서 제외됩니다.

XMLAggSYS_XMLAgg와 유사하지만 XMLAgg는 노드 컬렉션을 반환하지만 XMLFormat 객체를 사용한 서식을 허용하지 않습니다. 또한 XMLAggSYS_XMLAgg와 달리 출력을 요소 태그로 둘러싸지 않습니다.

order_by_clause 내에서 Oracle Database는 이 절의 다른 사용처와 달리 숫자 리터럴을 열 위치로 해석하지 않고 단순히 숫자 리터럴로 해석합니다.

 

참고:

XMLELEMENT 및 SYS_XMLAGG

 

예제

다음 예제는 직원 직군 ID와 성(last name)을 요소 내용으로 포함하는 Employee 요소를 포함하는 Department 요소를 생성합니다:

SELECT XMLELEMENT("Department",
   XMLAGG(XMLELEMENT("Employee", 
   e.job_id||' '||e.last_name)
   ORDER BY last_name))
   as "Dept_list"     
   FROM employees e
   WHERE e.department_id = 30;

Dept_list
-------------------------------------------------------------
<Department>
  <Employee>PU_CLERK Baida</Employee>
  <Employee>PU_CLERK Colmenares</Employee>
  <Employee>PU_CLERK Himuro</Employee>
  <Employee>PU_CLERK Khoo</Employee>
  <Employee>PU_MAN Raphaely</Employee>
  <Employee>PU_CLERK Tobias</Employee>
</Department>

 

결과는 한 행입니다. 이는 XMLAgg가 행들을 집계하기 때문입니다. GROUP BY 절을 사용하여 반환된 행 집합을 여러 그룹으로 그룹화할 수 있습니다:

SELECT XMLELEMENT("Department",
      XMLAGG(XMLELEMENT("Employee", e.job_id||' '||e.last_name)))
   AS "Dept_list"
   FROM employees e
   GROUP BY e.department_id;

Dept_list
---------------------------------------------------------
<Department>
  <Employee>AD_ASST Whalen</Employee>
</Department>

<Department>
  <Employee>MK_MAN Hartstein</Employee>
  <Employee>MK_REP Fay</Employee>
</Department>

<Department>
  <Employee>PU_MAN Raphaely</Employee>
  <Employee>PU_CLERK Khoo</Employee>
  <Employee>PU_CLERK Tobias</Employee>
  <Employee>PU_CLERK Baida</Employee>
  <Employee>PU_CLERK Colmenares</Employee>
  <Employee>PU_CLERK Himuro</Employee>
</Department>
. . .

 


출처: 오라클 레퍼런스

원문 링크: Oracle XMLAGG 함수 문서

 

반응형

댓글