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

SQL Server PIVOT možná?

Protože používáte SQL Server 2005, zde je kód:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       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:

  • Kontingenční data v T-SQL
  • Jak vytvořím souhrn připojením k jedné tabulce pomocí serveru SQL?
  • https://stackoverflow.com/q/8248059/570191


  1. Jak funguje funkce NCHAR() v SQL Server (T-SQL)

  2. Změna priority účtu v databázovém poštovním profilu (SSMS)

  3. Porovnejte pole pro rovnost, ignorujte pořadí prvků

  4. Jak funguje DAYOFYEAR() v MariaDB