sql >> Databáze >  >> RDS >> Sqlserver

Kontingenční data v T-SQL

Pokud používáte SQL Server 2005 (nebo vyšší), zde je kód:

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 )

To bude fungovat bez ohledu na to, kolik různých stavů máte. Dynamicky sestavuje dotaz pomocí PIVOT . Jediným způsobem, jak můžete provést PIVOT s dynamickými sloupci, je dynamické sestavení dotazu, což lze provést na serveru SQL Server.

Další příklady:

  • Možná SQL Server PIVOT?
  • Jak vytvořím souhrn připojením k jedné tabulce pomocí serveru SQL?


  1. Část 3 – Zákazníci, hovory a schůzky

  2. Jak UPDATE a SELECT zároveň

  3. Jak změnit národní prostředí při formátování čísel v PostgreSQL

  4. Blokovat, blokovat, blokovat na dveřích DBA s blokováním serveru SQL