Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server PIVOT talvez?


Como você está usando o SQL Server 2005, aqui está o 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 )

Isso funcionará, não importa quantos status diferentes você tenha. Ele monta dinamicamente uma consulta com PIVOT . A única maneira de fazer PIVOT com colunas dinâmicas é montando a consulta dinamicamente, o que pode ser feito no SQL Server.

Outros exemplos:
  • Dados dinâmicos em T-SQL
  • Como crio um resumo juntando-se a uma única tabela com o SQL Server?
  • https://stackoverflow.com/q/8248059/570191