본문 바로가기
Developer/MS-sql

multi sub query in one field , Row 를 한필드로 , 결과를 한 필드에

by MindOpener 2016. 11. 18.
반응형


종종 서브쿼리에 멀티블 데이터를 

한 필드에 넣어야 하는 경우가 업무중 발생한다. 


이런 경우에는 아래처럼 


stuff 로 문자를 합치고 

https://msdn.microsoft.com/ko-kr/library/ms188043.aspx


for xml path 로 Row  결과를 행 집합으로 반환

https://msdn.microsoft.com/ko-kr/library/ms178107.aspx


해서 처리 할 수 있다. 

아래는 distnct 와 조인으로 된 쿼리에 멀티플 카테고리 명을 추출한 것 


select distinct mit_ord_day as 주문일,  itm_nam  as 상품명, sum([MIT_CNT]) as 수량 



, STUFF(( SELECT ',' + ctc_nam

FROM Ctable  P

left join dtable  on P.ctg_cod = ctc_cod

WHERE (P.ctg_itm_num = T.ctg_itm_num  and substring(ctc_cod,1,12) ='001100008001' )

FOR XML PATH ('')),1,1,'') AS  카테고리명



FROM Atable 

left join Btable  on [MIT_ITM_NUM] = itm_num

left join Ctable T on  itm_num = ctg_itm_num

where mit_ord_Day between  '2015-01-01' and '2016-10-31' and substring(ctg_cod,1,12) ='001100008001' 

group by mit_ord_day , ctg_itm_num, itm_nam,ctg_cod

having  sum(mit_cnt) <> 0

order by mit_ord_day 



before 

2016-10-31 00:00:00  예xx4 (영아, 유아부 3~5세 - 교회학교용) 66.00 공과별

2016-10-31 00:00:00         예xx4 (영아, 유아부 3~5세 - 교회학교용) 66.00 대상별

2016-10-31 00:00:00  예xx4 (영아, 유아부 3~5세 - 입체그림책) 2.00 기타자료


After 

2016-10-31 00:00:00         예xx4 (영아, 유아부 3~5세 - 교회학교용) 66.00 영유아,공과별,대상별

2016-10-31 00:00:00  예xx4 (영아, 유아부 3~5세 - 입체그림책)         2.00   기타자료 


마지막 필드의 row 가 합쳐졋다.   



반응형