动态轴
DROP TABLE #source
CREATE TABLE #source (ID INT, name VARCHAR(100),Description VARCHAR(100), amount int)
INSERT INTO #source( Id,name, description, amount)
VALUES ( 1 ,'TEST', 'TEST DESC. 1', 100),
(1 , 'TEST', 'TEST DESC. 2' , 200),
(1 , 'TEST', 'TEST DESC. 3' , 300)
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = STUFF
(
(
SELECT ',' + QUOTENAME(Description)
FROM #source
GROUP BY Description
ORDER BY Description
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),
1,1,''
);
SET @query = 'SELECT *
FROM
(
SELECT Id,name, Description, amount
FROM #source
) x
PIVOT
(
SUM(AMOUNT)
FOR description IN (' + @cols + ')
) p ';
prINT @qUERY
EXECUTE(@query);