これは私のコードです:
declare @sql as varchar(max)
set @sql = 'insert into #TempReport select [Country],' + @cols + '
from
(
select
C.Country_Name AS [Country],
D.GSL_Name AS [GSL],
SUM(A.Allocation) AS Total
from Work_Information A
inner join Sales B
on A.Sales_ID = B.Sales_Id
inner join Countries C
on A.Country_ID = C.Country_ID
inner join tbl_GSL D
on A.GSL_ID = D.GSL_ID AND A.Sales_ID = D.Sales_Id
where A.Sales_Id = 1
group by A.Country_ID,C.Country_Name, A.Sales_ID, A.GSL_ID,D.GSL_Name
) P Pivot (sum(Total) for [GSL] in (' + @Cols + ')) as Pvt'
exec(@sql)
declare @SumCols as varchar(max)
select @SumCols = stuff(
(select ', Sum(' + quotename(GSLName) + ')' + REPLACE(GSLName,' ','') from
(
select TOP 200 GSL_Name as GSLName
from tbl_GSL GSL
where Sales_Id = 1
ORDER BY GSL_Name
) GlobalSales
ORDER BY GSLName FOR XML PATH('')
),1,2,'')
declare @sql3 as varchar(1000)
set @sql3 = 'select Country,' + @SumCols + ' from #TempReport group by Country WITH ROLLUP'
exec(@sql3)
ストアド プロシージャが非常に長いため、コードの関連部分のみを投稿しました。
コードは正常に動作しています。WITH ROLLUP 句を使用して、最後に総計の行と列を追加しています。コードの最後の行は最後に行を追加しますが、最後の列を総計として追加したいです。また、ROLLUP によって追加された最後の行には、最初の列の値が総計として含まれている必要があります。