* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 64bit | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
여러 로우의 값을 하나의 컬럼으로 바꾸는 방법에 사용되는 Oracle XMLAGG 함수를 사용하고 있습니다.
Oracle에서 CUBRID로 변경하는 작업을 확인하고 있는데, XMLAGG를 대체할 함수 또는 사용법이 있는지 여쭤봅니다.
감사합니다.
group_concat()을 사용해 보세요.
xmlagg 사용 시, 구분자가 없지만 group_concat()은 기본값으로 ' , ' 를 구분자로 가집니다. 참고하세요
++++++++++++++++++++++++++++++++
GROUP_CONCAT
GROUP_CONCAT([DISTINCT] expression [ORDER BY {column | unsigned_int} [ASC | DESC]] [SEPARATOR str_val])
GROUP_CONCAT 함수는 집계 함수로만 사용되며, 그룹에서 NULL 이 아닌 값들을 연결하여 결과 문자열을 VARCHAR 타입으로 반환한다. 질의 결과 행이 없거나 NULL 값만 있으면 NULL 을 반환한다.
Parameters:
expression -- 수치 또는 문자열을 반환하는 칼럼 또는 연산식
str_val -- 구분자로 쓰일 문자열
DISTINCT -- 결과에서 중복되는 값을 제거한다.
ORDERBY -- 결과 값의 순서를 지정한다.
SEPARATOR -- 결과 값 사이에 구분할 구분자를 지정한다. 생략하면 기본값인 쉼표(,)를 구분자로 사용한다.
Return type: STRING
++++++++++++++++++++++++++++++++++
예제1) select group_concat(aa) from testdb; => '001,002,003,004,011,012,013'
예제2) select group_concat(aa separator '') from testdb; => '001002003004011012013'