sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server PIVOT måske?

Da du bruger SQL Server 2005, er her koden:

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 )

Dette vil virke uanset hvor mange forskellige status du har. Den samler dynamisk en forespørgsel med PIVOT . Den eneste måde, du kan lave PIVOT med dynamiske kolonner, er ved at samle forespørgslen dynamisk, hvilket kan gøres i SQL Server.

Andre eksempler:

  • Pivot data i T-SQL
  • Hvordan opbygger jeg en oversigt ved at slutte mig til en enkelt tabel med SQL Server?
  • https://stackoverflow.com/q/8248059/570191


  1. SQLite JSON_REMOVE()

  2. Forbindelsespooling i .NET/SQL-server?

  3. Sådan benchmarker du PostgreSQL-ydelse

  4. Sådan fortolkes PosgreSQL txid_current() værdi