sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man pivoterar i SQL

Har du läst dokumentationen på PIVOT i Microsoft SQL Server 2005?

SELECT CustId, 
  [1] AS Admin,
  [2] AS Manager,
  [3] AS Support,
  [4] AS Assistant
FROM (SELECT c.CustId, r.RoleId
FROM CustomerRoles c JOIN Roles r USING (RoleId)) AS s
PIVOT (
 COUNT(CustId)
 FOR RoleId IN ([1], [2], [3], [4])
) AS pvt
ORDER BY CustId;

Jag har inte testat ovanstående, utan bara baserat det på doc. Detta kan komma igång.

Det verkar inte finnas något sätt att generera kolumnerna dynamiskt. Du måste hårdkoda dem.



  1. Flera kopplingar till samma tabell

  2. Skapa PHP-array från MySQL-kolumnen

  3. Problemet med förlorad uppdatering i samtidiga transaktioner

  4. markören med sp_executesql och parametrar