종종 서브쿼리에 멀티블 데이터를
한 필드에 넣어야 하는 경우가 업무중 발생한다.
이런 경우에는 아래처럼
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 가 합쳐졋다.
'Developer > MS-sql' 카테고리의 다른 글
현재시간 기준 과거 select (0) | 2017.02.03 |
---|---|
날짜 타입 /엑셀에서 텍스트 검색 (0) | 2016.11.25 |
다른 테이블 기반 업데이트 쿼리 (0) | 2016.01.20 |
DATENAME() 함수 / 날짜 추출 함수 (0) | 2015.12.10 |
sql 달 말일 구하기 (0) | 2015.09.01 |