DA/튜닝

[DA/튜닝] 다중행 결과 값을 단일행으로 변환

bbugge 2019. 7. 15. 15:53

ORACLE

// 11gR2 이상 버전에서는 listagg 함수를 쓰면 편하게 표현가능.

// 11gR2에서 해당 함수를 쓰면 plan은 볼 수 없는 듯함. 

select a.table_name, a.index_name,
listagg(b.column_name,', ') within group (order by b.column_name) as columns
from user_indexes a, user_ind_columns b
where a.table_name = b.table_name
and a.index_name = b.index_name
and a.table_name = '[테이블 명]'
group by a.table_name,a.index_name;

 

// 11gR2 이전에서는 아래와 같은 방식을 사용

// 이 역시 plan을 볼 수 없음.

select table_name,
index_name,
substr(xmlagg(xmlelement(column_name,', ' || column_name) order by column_name).EXTRACT('//text()').getstringval(),2) as columns
from user_ind_columns
where table_name = '[테이블 명]'
group by table_name, index_name;