CREATE PROCEDURE dbo.DynamicPivotExampleWithMultipleTotals as begin DECLARE @ActionSelectString nvarchar(4000) , @SQLPivotQuery nvarchar(4000) ;WITH ListTempCTE as (SELECT 'Quotes' AS ActionType , 1 as OrderNum UNION SELECT DISTINCT Problem as Actiontype, 2 as OrderNum FROM CancellationMaster ) SELECT @ActionSelectString = stuff ( ( select ',[' + cast(ActionType as varchar(100)) + ']' from ListTempCTE ORDER BY OrderNum, ActionType for xml path('') ), 1, 1, '') DECLARE @SumString nvarchar(4000) SET @SumString = REPLACE( @ActionSelectString, '[', 'SUM([') SET @SumString = REPLACE( @SumString, ']', '])' ) SET @SQLPivotQuery = ';WITH PIVOTCTE as (select QuoteDate as ActivityDate, Client, ''Quotes'' as ActionType, NumQuotes as Qty FROM dbo.QuoteMaster UNION SELECT CancelDate as ActivityDate, Client, Problem as ActionType, Qty from dbo.CancellationMaster) , ' set @SQLPivotQuery = @SqlPivotQuery + ' FinalPivotCTE as (SELECT ActivityDate, Client, ' + @ActionSelectString + ' FROM PIVOTCTE pivot ( SUM(Qty) for ActionType in (' + @ActionSelectString + ')) TEMPLIST ) ' + char(13) + char(10) set @SQLPivotQuery = @SQLPivotQuery + 'select 1 as ResultSetNum, * from FinalPivotCTE UNION ALL SELECT 2 as ResultSetNum, DATEADD( D, 7-DATEPART(DW,ActivityDate), ActivityDate) as WeekEndDate, NULL as Client, ' + @SumString + ' FROM FinalPIvotCTE GROUP BY DATEADD( D, 7-DATEPART(DW,ActivityDate), ActivityDate) union all SELECT 3 as ResultSetNum, NULL as ActivityDate, NULL AS Client, ' + @SumString + ' FROM FinalPivotCTE' EXEC sp_executesql @SqlPivotQuery end