Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2008 Zapytanie krzyżowe

Powinieneś być w stanie to zrobić za pomocą operatora „pivot”. Coś takiego (choć jestem pewien, że stłumiłem niektóre szczegóły dotyczące pisowni lub składni...):

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;

Problem polega na tym, że musisz znać dokładny zestaw identyfikatorów witryn, które chcesz uwzględnić w zapytaniu. Jeśli potrzebujesz bardziej dynamicznej tabeli przestawnej (takiej jak w programie Excel), musisz wygenerować tekst zapytania jako ciąg i użyć sp_executesql do jego uruchomienia. W wygenerowanym tekście należy uwzględnić tyle ciągów „[1], [2], [3], [4], [5]...” i „[1] co lokacja1, [2] co lokacja2.. ”. rzeczy, których potrzebujesz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodaj kolumnę do tabeli z domyślną wartością równą wartości istniejącej kolumny

  2. Monitoruj bazy danych i instancje za pomocą Monitora aktywności | Rozwiązywanie problemów z wydajnością serwera SQL -2

  3. Czy istnieje sposób na uzyskanie różnych wyników dla tego samego zapytania SQL, jeśli dane pozostają takie same?

  4. Uciekanie symboli specjalnych w Sqlcmd

  5. Jak przechowywać różne typy dokumentów