안녕하세요
1,2 항목이 같고 3항목만 틀릴때 1,2중복제거와 3을 한행으로 하고 싶은데 도움좀 부탁드립니다 ㅠㅠ
출력 결과의 예시는
이름 성별 취미
홍길동 남 축구,야구
홍길동 남 농구
해당 결과를
이름 성별 취미
홍길동 남 축구, 야구, 농구
이름 성별이 같고 취미가 다를때 취미의 행을 1열에 콤마로 구분하여 옮길 수 있는 방법좀 알려주시면 정말 감사하겠습니다 ㅠㅠ
Comment 1
-
건우아빠
2016.12.21 09:49
안녕하세요
1,2 항목이 같고 3항목만 틀릴때 1,2중복제거와 3을 한행으로 하고 싶은데 도움좀 부탁드립니다 ㅠㅠ
출력 결과의 예시는
이름 성별 취미
홍길동 남 축구,야구
홍길동 남 농구
해당 결과를
이름 성별 취미
홍길동 남 축구, 야구, 농구
이름 성별이 같고 취미가 다를때 취미의 행을 1열에 콤마로 구분하여 옮길 수 있는 방법좀 알려주시면 정말 감사하겠습니다 ㅠㅠ
2016.12.21 09:49
구분자로 되어 있는걸 열->행으로 하나씩 분리 -- 사용자함수 만들어 사용하시면 좋을듯...
이걸 중복제거하고 이걸 다시 행값을 열로 합하는 방법으로 하시면 방법으로...
with numT
as(
select 1 num union all
select 2 num union all
select 3 num union all
select 4 num -- / 배열 4개까지만 지원 한답니다...
-- 문제는 소수점이 있는 수치에서는 한번더 replace 사용해야함..
) ,
res as
(
select '홍길동' 이름, '남' 성별 ,'축구,야구' 취미 union all
select '홍길동' , '남' ,'농구'
) ,
result as --- http://www.sqler.com/140487
(
select distinct a.이름
, a.성별
, parsename(replace(a.취미,',','.') ,b.num ) 취미
from res a cross join numT b
where parsename(replace(a.취미,',','.') ,b.num ) is not null
)
SELECT DISTINCT 이름 , 성별 --- http://www.sqler.com/141578 1) 행값을 구분자로 합하여 열로 표현
, STUFF(
(SELECT ',' + 취미 AS [text()] FROM result b WHERE b.이름 = a.이름 and b.성별 = a.성별 FOR XML PATH('')) , 1, 1, '' ) AS 취미
FROM result a
ORDER BY 1