728x90
COLLECT
구문
COLLECT( [ DISTINCT | UNIQUE ] column [ ORDER BY expr ] )
목적
COLLECT는 인자로 임의의 유형의 column을 취하고 선택된 행들로부터 입력 유형의 nested table을 생성하는 집계 함수입니다. 이 함수를 정확한 결과를 얻기 위해서는 CAST 함수 내에서 사용해야 합니다.
만약 column이 자체적으로 컬렉션인 경우, COLLECT의 출력은 컬렉션의 nested table이 됩니다. column이 사용자 정의 유형인 경우, 선택적으로 DISTINCT, UNIQUE 및 ORDER BY 절을 사용하려면 해당 column에 MAP 또는 ORDER 메소드가 정의되어 있어야 합니다.
참고:
- CAST 및 Aggregate Functions
- Oracle Database Globalization Support Guide의 부록 C에서는 COLLECT 함수에서 DISTINCT 및 ORDER BY 절을 위해 문자 값 비교에 사용되는 정렬 결정 규칙(collation determination rules)에 대한 정보를 제공합니다.
예제
다음 예제는 샘플 테이블 oe.customers의 varray column인 전화번호에서 nested table을 생성합니다. nested table에는 소득 수준이 L: 300,000 이상인 고객들의 전화번호만 포함됩니다.
CREATE TYPE phone_book_t AS TABLE OF phone_list_typ;
/
SELECT CAST(COLLECT(phone_numbers) AS phone_book_t) "Income Level L Phone Book"
FROM customers
WHERE income_level = 'L: 300,000 and above';
Income Level L Phone Book
--------------------------------------------------------------------------------
PHONE_BOOK_T(PHONE_LIST_TYP('+1 414 123 4307'), PHONE_LIST_TYP('+1 608 123 4344'
), PHONE_LIST_TYP('+1 814 123 4696'), PHONE_LIST_TYP('+1 215 123 4721'), PHONE_L
IST_TYP('+1 814 123 4755'), PHONE_LIST_TYP('+91 11 012 4817', '+91 11 083 4817')
, PHONE_LIST_TYP('+91 172 012 4837'), PHONE_LIST_TYP('+41 31 012 3569', '+41 31
083 3569'))
다음 예제는 샘플 테이블 oe.warehouses의 창고 이름 column으로부터 nested table을 생성합니다. ORDER BY를 사용하여 창고 이름을 정렬합니다.
CREATE TYPE warehouse_name_t AS TABLE OF VARCHAR2(35);
/
SELECT CAST(COLLECT(warehouse_name ORDER BY warehouse_name)
AS warehouse_name_t) "Warehouses"
FROM warehouses;
Warehouses
--------------------------------------------------------------------------------
WAREHOUSE_NAME_TYP('Beijing', 'Bombay', 'Mexico City', 'New Jersey', 'San Franci
sco', 'Seattle, Washington', 'Southlake, Texas', 'Sydney', 'Toronto')
출처: 오라클 레퍼런스
원문 링크: Oracle COLLECT 함수 문서
반응형
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] CON_DBID_TO_ID - container DBID에 대한 container ID 반환 (0) | 2023.08.01 |
---|---|
[오라클 레퍼런스 함수] COMPOSE - Unicode 정규화 적용 결과 반환 (0) | 2023.08.01 |
[오라클 레퍼런스 함수] COLLATION - 정렬(collation)의 이름 반환 (0) | 2023.08.01 |
[오라클 레퍼런스 함수] COALESCE - 첫 번째 non-null 값 반환 (0) | 2023.08.01 |
[오라클 레퍼런스 함수] CLUSTER_SET - 클러스터 ID와 확률 쌍의 집합 반환 (0) | 2023.08.01 |
댓글