FOR XML
원래는 디비와 xml을 연동하기 위해서 나온 연산자로써 FOR XML('row') 라고 SELECT절 뒤에 쓰게 되면, 반환 되어서 나오는 컬럼들이 한줄로 나열되고 <row>속성1</row><row>속성2</row>처럼 id에 감싸져서 반환되는 함수이다.
그런데 이런 일뿐 아니라 SELECT된 결과를 한행에 표현하고 싶을때에 사용해도 좋은 함수이다.
코드(간략하게)
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT ... FROM ( SELECT ... STUFF(( SELECT DISTINCT ', '+ CK1.KOR FROM TBL1 CK1 WHERE CK1.PK = TBL1.PK FOR XML PATH(''))1,2,'') ... FROM TBL1 T1 ) | cs |
T1이 먼저 생성되기때문에 나중에 생성되는 CK1을 T1으로 필터링 해주어야 각 행마다 모두 같은 값이 안나온다.
필터링에 신경쓰자!
결과
'SQL > MS-SQL' 카테고리의 다른 글
CHOOSE, IIF 논리함수 (0) | 2017.09.05 |
---|---|
특정경우를 만족하는 행 SELECT (0) | 2017.09.04 |
WINDOW FUNCTION (0) | 2017.09.04 |
Dynamic Query와 Pivot (0) | 2017.09.03 |
sp_executesql (0) | 2017.09.03 |