sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 Cross Tab Query

Du bör kunna göra detta med 'pivot'-operatorn. Något liknande detta (även om jag är säker på att jag har dämpat några stavnings- eller syntaxdetaljer...):

select catTitle, [1] as site1, [2] as site2, [3] as site3, [4] as site4, [5] as site5
  from (select category.catTitle, equipment.quantity, site.title
          from equipment
            inner join site
              on (equipment.siteid = site.siteid)
            inner join category
              on (category.catid = equipment.catid)
        ) 
  pivot
  (
  sum (quantity)
    for equipment.siteid in ( [1], [2], [3], [4], [5] )
  ) as pvt
order by pvt.category;

Problemet med detta är att du behöver veta exakt vilken uppsättning webbplats-ID du vill inkludera i frågan. Om du behöver en mer dynamisk korstabell (som du kan få i Excel), måste du generera frågetexten som en sträng och använda sp_executesql för att köra den. I den genererade texten inkluderar du lika många av "[1], [2], [3], [4], [5]..." och "[1] som site1, [2] som site2.. ." saker som du behöver.



  1. Använda Select and where-satsen i Criteria

  2. Välja en delmängd av rader från en PHP-tabell

  3. Vad skulle vara ett korrekt sätt att testa TypeORMs QueryBuilder-kedjemetoder?

  4. Är MariaDB JDBC-drivrutinen påverkad av Log4j-sårbarheten?