AGE NAME
----------------
10 A
10 B
10 C
11 D
11 E
테이블 구조가 위와 같은데 가져오려는 결과가
10 A,B,C
11 D,E
가 나오게 하려고 한다.
SELECT AGE, CAST(XML2CLOB(XMLAGG(XMLELEMENT(NAME "NM", strip(NAME)))) AS VARCHAR(3000))
FROM TABLE
GROUP BY AGE
10 <NM>A</NM><NM>B</NM><NM>C</NM>
11 <NM>D</NM><NM>E</NM>
SELECT AGE,
REPLACE(REPLACE(REPLACE(
CAST(XML2CLOB(XMLAGG(XMLELEMENT(NAME "NM", strip(NAME)))) AS VARCHAR(3000))
, '</NM><NM>', ',')
, '<NM>', '')
, '</NM>', '')
FROM TABLE
GROUP BY AGE
10 A,B,C
11 D,E
listagg를 지원하는 DB2 를 사용중이라면
SELECT AGE, LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY NAME)
FROM TABLE
GROUP BY AGE
로 간단히 할수도 있다
'컴퓨터 프로그래밍' 카테고리의 다른 글
C# 컬렉션이나 배열의 랜덤 요소 고르기 (1) | 2010.06.06 |
---|---|
C# 의 static constructor (정적 생성자?) (0) | 2010.04.12 |
[C#] byte[] 를 구조체로 바꾸기 (0) | 2009.12.28 |