sql >> Database >  >> RDS >> Sqlserver

Gegevens draaien in T-SQL

Als u SQL Server 2005 (of hoger) gebruikt, is hier de code:

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 )

Dit werkt ongeacht hoeveel verschillende statussen je hebt. Het stelt dynamisch een query samen met PIVOT . De enige manier waarop u PIVOT met dynamische kolommen kunt doen, is door de query dynamisch samen te stellen, wat kan worden gedaan in SQL Server.

Andere voorbeelden:

  • SQL Server PIVOT misschien?
  • Hoe maak ik een samenvatting door met SQL Server aan een enkele tabel deel te nemen?


  1. De ORDER BY-component is ongeldig in views, inline-functies, afgeleide tabellen, subquery's en algemene tabelexpressies

  2. SQL Server gebruiken als een DB-wachtrij met meerdere clients

  3. Hoe te voorkomen dat dubbele records worden ingevoegd in SQL INSERT-query (5 eenvoudige manieren)

  4. Maak verbinding met SQL Server met Windows-verificatie vanaf een Linux-machine via JDBC