Ако използвате SQL Server 2005 (или по-нова версия), ето кода:
DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)
SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Month])
FROM YourTable FOR XML PATH('') ), 1, 1, '')
SET @sqlquery = 'SELECT * FROM
(SELECT Person, Month, Paid
FROM YourTable ) base
PIVOT (Sum(Paid) FOR [Person]
IN (' + @cols + ')) AS finalpivot'
EXECUTE ( @sqlquery )
Това ще работи без значение колко различни статуса имате. Той динамично събира заявка с PIVOT
. Единственият начин да направите PIVOT с динамични колони е чрез динамично сглобяване на заявката, което може да се направи в SQL Server.
Други примери:
- Може би SQL Server PIVOT?
- Как да създам обобщение, като се присъединя към една таблица със SQL Server?