SQL/MS-SQL
FOR XML
snoohey
2017. 9. 4. 14:26
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으로 필터링 해주어야 각 행마다 모두 같은 값이 안나온다.
필터링에 신경쓰자!