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

+ Recent posts