고수분들께 좀 여쭤보고 싶은게 있어서 부탁드립니다.
현재 레코드가
번호 코드값
1 ac1
1 ac2
2 et1
2 et2
이렇게 되어있는데.. 이 데이터를
1 ac1, ac2
2 et1, et2
이렇게 나오게 하고 싶어요. 고수님들의 고견 부탁드립니다.
with tmp as (
select 1 as id, 'aaa1' as val union all
select 1 as id, 'aaa2' as val union all
select 2 as id, 'bbb1' as val union all
select 2 as id, 'bbb2' as val
)
select
id,
string_agg(val, ',') as vals
from tmp
group by id
string_agg가 지원되는 버전이면 제일 깔끔하네요.
xml path를 사용하는 방법도 있네요.
with t as (
select 1 num, 'ac1' code
union all select 1, 'ac2'
union all select 2, 'et1'
union all select 2, 'et2'
SELECT
num,
STUFF((
',' + code
FROM
t b
WHERE
b.num = a.num
FOR XML PATH('') ),1,1,'') AS string
t a
GROUP BY num