sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server PIVOT quizás?

Dado que está utilizando SQL Server 2005, aquí está el código:

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 )

Esto funcionará sin importar cuántos estados diferentes tengas. Ensambla dinámicamente una consulta con PIVOT . La única forma en que puede hacer PIVOT con columnas dinámicas es ensamblando la consulta dinámicamente, lo que se puede hacer en SQL Server.

Otros ejemplos:

  • Datos pivote en T-SQL
  • ¿Cómo creo un resumen al unirme a una sola tabla con SQL Server?
  • https://stackoverflow.com/q/8248059/570191