Sql-Server
來自樞軸的兩列的總和
我有以下查詢:
DECLARE @columns NVARCHAR(MAX),@columns1 NVARCHAR(MAX), @sql NVARCHAR(MAX),@columns2 NVARCHAR(MAX),@columns3 NVARCHAR(MAX); SET @columns = '1,2,3,4'; SELECT @columns1 = STUFF(( SELECT ',' + QUOTENAME(Value) FROM dbo.SplitString(@columns,',') FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') , 1, 1, ''); select @columns2 = STUFF(( SELECT ',p.' + QUOTENAME(Value) FROM dbo.SplitString(@columns,',') FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') , 1, 1, ''); select @columns3 = STUFF(( SELECT ',p1.' + QUOTENAME(Value) FROM dbo.SplitString(@columns,',') FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') , 1, 1, ''); SET @sql = N' SELECT distinct ' + @columns2 + ', p1.* FROM INNER JOIN (SELECT [CALF_AN] ,[CALF_NPERIODE] ,[CNT_ID] --,[PER_ID] ,[MontantAccoss] from [Reporting].[dbo].[TEMPAccoss] WHERE [CALF_AN]=2014 ) AS j PIVOT ( sum([MontantAccoss]) for [CALF_NPERIODE] in ('+@columns1+') ) AS p ON p.CNT_ID = COT1.CNT_ID INNER JOIN (SELECT [CALF_AN] ,[CALF_NPERIODE] ,[CNT_ID] --,[PER_ID] ,[MontantHorsAccoss] from [Reporting].[dbo].[TEMPHorsAccoss] WHERE [CALF_AN]=2014 ) AS j PIVOT ( sum([MontantHorsAccoss]) for [CALF_NPERIODE] in ('+@columns1+') ) AS p1 ON p1.CNT_ID = COT1.CNT_ID;'; PRINT @sql; EXEC sp_executesql @sql;
我希望對
sum([MontantAccoss])+sum([MontantHorsAccoss])
樞軸 p 和樞軸 p2 的每一列進行求和?在我的情況下 selectp.[1]+p1.[1],p.[2]+p1.[2],p.[3]+p1.[3]
。任何想法?
也許創建一個
@columns4
這樣的:SELECT @columns4 = STUFF( ( SELECT ',' + QUOTENAME('total' + Value) + '=p.' + QUOTENAME(Value) + '+p1.' + QUOTENAME(Value) FROM dbo.SplitString(@columns,',') FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'), 1, 1, '' );
(或修改
@columns3
您的程式碼目前似乎未使用的 )並將其添加到主查詢中。