--쿼리 삽질 하다가 결국질문 드립니다.
-- Test 테이블 데이타 입니다.
brench barcode itemcount
테스트1 8809182000011 50.00
테스트1 8809182000028 60.00
테스트1 8809182000042 70.00
테스트2 2400000000013 100.00
테스트2 2400000000020 200.00
테스트3 8809182000011 100.00
테스트3 8809182000028 200.00
DECLARE @Prod varchar(2000)
SET @Prod = ''
SELECT @Prod = @Prod + '[' + brench + '],'
FROM (SELECT Distinct brench FROM Test) A
SET @Prod = LEFT(@Prod, LEN(@Prod) - 1)
Exec ('SELECT barcode,' + @Prod + ' FROM (select barcode, brench, itemcount from Test) b
PIVOT (SUM(itemcount) FOR brench IN (' + @Prod + ')) AS PVT0')
--결과 및 질문
barcode 테스트1 테스트2 테스트3 (합계를 표현 할려면 쿼리을 어떻게 해야 하나요.?)
2400000000013 NULL 100.00 NULL 100 -> ?
2400000000020 NULL 200.00 NULL 200
8809182000011 50.00 NULL 100.00 150
8809182000028 60.00 NULL 200.00 260
8809182000042 70.00 NULL NULL 70
-- 이문장을 실행하면 (5개 행이 영향을 받음) 이라고 메세지 나옵니다.
--하지만 select * from #temp0 해 보면 "개체 이름 '#temp0'이(가) 잘못되었습니다." 라고 나옵니다.
--TempTable 에 Batch 할려면 어떻게 해야 되나요.?
Exec ('select a.* into #temp0 from (SELECT barcode,' + @Prod + ' FROM (select barcode, brench, itemcount from Test) b
PIVOT (SUM(itemcount) FOR brench IN (' + @Prod + ')) AS PVT0) as a')
매번 질문만 하고 도움받아가는 일인으로서 항상 감사드립니다.
좋은 하루 되세요.


drop table dbo.tSample select * into dbo.tSample from ( values (N'테스트1',8809182000011,50.00) , (N'테스트1',8809182000028,60.00) , (N'테스트1',8809182000042,70.00) , (N'테스트2',2400000000013,100.00) , (N'테스트2',2400000000020,200.00) , (N'테스트3',8809182000011,100.00) , (N'테스트3',8809182000028,200.00) ) as a (cBrench,cBarCode,cItemCnt) go declare @vProd varchar(2000) = '' ,@vProd2 varchar(2000) ,@vSQL varchar(max) select @vProd += ',['+ cBrench +']' from ( select distinct cBrench from dbo.tSample ) as a set @vProd = stuff(@vProd,1,1,'') set @vProd2 = replace(replace(replace(@vProd,',','+'),'[','isnull(['),']','],0)') +' as [합계]' print @vProd print @vProd2 set @vSQL = ' select cBarCode , '+ @vProd +' , '+ @vProd2 +' from ( select cBarCode , cBrench , cItemCnt from dbo.tSample ) as a pivot ( sum(cItemCnt) for cBrench in ('+ @vProd +') ) as pvt ' print @vSQL exec (@vSQL)