sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server PIVOT kanske?

Eftersom du använder SQL Server 2005, här är 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 )

Detta kommer att fungera oavsett hur många olika status du har. Den sammanställer dynamiskt en fråga med PIVOT . Det enda sättet du kan göra PIVOT med dynamiska kolumner är genom att sätta samman frågan dynamiskt, vilket kan göras i SQL Server.

Andra exempel:

  • Pivota data i T-SQL
  • Hur skapar jag en sammanfattning genom att ansluta till en enda tabell med SQL Server?
  • https://stackoverflow.com/q/8248059/570191


  1. Få de underliggande kolumnerna i en vy baserat på dess resultatuppsättning

  2. Android sqlite db.query leder till CursorIndexOutOfBoundsException

  3. Hierarkiska frågor i MySQL

  4. SQL VIEW