XMLAGG
문법 |
![Description of XMLAgg.gif follows](http://www.statwith.pe.kr/ORACLE/XMLAgg.gif)
목적 |
XMLAgg함수는 집계 함수이다. XML fragment(조각)의 집합체를 취해서, 집계된 XML 문서를 반환한다. NULL을 반환하는 인수는 결과로부터 제거된다.
XMLAgg는 XMLAgg가 Node의 집합체를 반환하는 점을 제외하고는 SYS_XMLAgg와 유사하다. XMLFormat Object를 이용한 포맷을 받아들이지 않는다. 또한, XMLAgg는 SYS_XMLAgg처럼 요소 태그를 출력에서 둘러싸지 않는다.
Order_by_clause구문에서, 오라클 데이터 베이스는 열의 위치처럼 수치 문자를 설명하지 않고, 단지 수치 문자로 설명한다.
예제 |
다음 예제는 요소의 항목으로써 종업원 작업 ID와 이름과 함께 종업원 요소를 포함한 부서 요소를 산출한다.
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> . . .
출처 : http://www.statwith.pe.kr/ORACLE/functions200.htm
'Database > Oracle' 카테고리의 다른 글
[펌] 여러로우의 값을 하나의 컬럼으로 바꾸는 방법[2] (0) | 2012.03.11 |
---|---|
[펌] XMLAGG() 여러로우의 값을 하나의 컬럼으로 바꾸는 방법 (0) | 2012.03.11 |
Oracle - RANK(), DENSE_RANK(), ROW_NUMBER()의 차이 (0) | 2012.02.03 |
Oracle 비교분석함수 LAG() , LEAD() 함수 (0) | 2012.02.03 |
[펌] Oracle 페이징 처리하기 (0) | 2011.12.26 |