あなたが言ったように、動的 SQL が必要になるので、まず こちらのリンク にアクセスしてください。 .それを読んだら、次のことを試してください:
コメントに続く更新されたコード:
DECLARE @cols AS NVARCHAR(MAX), @cols2 AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); WITH CTE AS ( SELECT *, CAST([Year] AS NVARCHAR(4))+RIGHT('00'+CAST([Month] AS NVARCHAR(2)),2) YearMonth FROM YourTable ) SELECT @cols = STUFF(( SELECT DISTINCT ',' + QUOTENAME(YearMonth) FROM CTE FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''), @cols2 = STUFF(( SELECT DISTINCT ',ISNULL(' + QUOTENAME(YearMonth) + ',0) AS ' + QUOTENAME(YearMonth) FROM CTE FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') SET @query = ' SELECT Payroll, Forname, Surname, ' + @cols2 + ' FROM ( SELECT Payroll, Forname, Surname, CAST([Year] AS NVARCHAR(4))+RIGHT(''00''+CAST([Month] AS NVARCHAR(2)),2) YearMonth, Amount FROM YourTable ) T PIVOT(SUM(Amount) FOR YearMonth IN ('[email protected]+')) PT' EXEC(@Query)
プレ>