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 | 





