반응형

WITH TABLE_A (NAME) AS (

SELECT '1'

UNION ALL

SELECT '2'

UNION ALL

SELECT '3'

UNION ALL

SELECT '4'

UNION ALL

SELECT '5'

)

SELECT *

FROM (

SELECT STUFF(

(

SELECT ',' + NAME FROM TEST_TABLE FOR XML PATH('')

), 1, 1, ''

) AS RESULT

FROM TEST_TABLE

) LIST

GROUP BY RESULT

일단 위의 소스는 풀소스입니다.

WITH TEST_TABLE만 만들고 SELECT * FROM TEST_TABLE해보면

1단계

이제 이것을 가지고 STUFF FOR XML로 변환을 하게 되면

2단계

위처럼 2단계가 되는데요... 왜 5개가 똑같이 나오냐하면... 원래 5개의 Row를 가지고 있었기 때문입니다.

그래서 1개로 만들기 위해서 방법은 매우 많습니다.

TOP 1을 사용하는 경우, SELECT로 묶고 GROUP BY 사용하는 경우, ROW NUMBER PARTITION을 사용하는 경우

다만 제가 SELECT로 묶고 GROUP BY를 사용 한 이유는

만약 여러개의 데이터들을 묶는데 경우가 여러개가 있다면...

TOP1보다는 SELECT로 묶고 GROUP BY를 사용하는것이 좋습니다.

ROW NUMBER PARTITION 방법도 좋지만... 그냥 사용했습니다.ㅎㅎ

3단계

결과는 3단계처럼 1개가 나오죠.ㅎ


반응형
로그 이미지

우주의빛

자료를 공유하고 좋은자료 추천 하는 곳입니다.

,