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

Jak używać group by w zapytaniu SQL Server?

Ogólnie rzecz biorąc, po rozpoczęciu grupowania każda kolumna wymieniona w SELECT musi być albo kolumną w grupie GROUP, albo jej agregacją. Załóżmy, że masz taki stół:

| ID | Name        | City        |
|  1 | Foo bar     | San Jose    |
|  2 | Bar foo     | San Jose    |
|  3 | Baz Foo     | Santa Clara |

Jeśli chcesz uzyskać listę wszystkich miast w swojej bazie danych i spróbowałeś:

SELECT * FROM table GROUP BY City

... to się nie powiedzie, ponieważ pytasz o kolumny (ID i Name), które nie znajdują się w klauzuli GROUP BY. Możesz zamiast tego:

SELECT City, count(City) as Cnt FROM table GROUP BY City

...i to by Ci dało:

| City        | Cnt |
| San Jose    |  2  |
| Santa Clara |  1  |

...ale NIE zdobędzie dowodu tożsamości ani nazwiska. Bardziej skomplikowane rzeczy możesz robić np. za pomocą subselects lub self-joins, ale zasadniczo to, co próbujesz zrobić, nie jest możliwe zgodnie z opisem. Rozwiąż problem dokładniej (jak mają wyglądać dane?) i przejdź od tego miejsca.

Powodzenia!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. błąd, ciąg lub dane binarne zostaną obcięte podczas próby wstawienia

  2. Ukrywanie instancji SQL Server w sieci

  3. Oblicz czas pracy z tabeli zmian i przerw

  4. Instrukcja SQL Update Replace

  5. Usuwanie i odtwarzanie ograniczeń w SQL Server