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

Czy można użyć funkcji Aggregate w instrukcji Select bez użycia klauzuli Group By?

Wszystkie kolumny w klauzuli SELECT, które nie mają agregacji, muszą znajdować się w grupie GROUP BY

Dobrze:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3

Również dobrze:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, col5, col6

Brak innych kolumn =nie jest potrzebna funkcja GROUP BY

SELECT MAX(col4)
...

Nie działa:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2

Bez sensu:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, MAX(col4)

Posiadanie agregacji (MAX itp.) z innymi kolumnami bez funkcji GROUP BY nie ma sensu, ponieważ zapytanie staje się niejednoznaczne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest Azure Data Studio?

  2. Problem z zapytaniem SQL

  3. FOR XML PATH i konkatenacja ciągów

  4. Dlaczego i kiedy powinienem używać SPARSE COLUMN? (SERWER SQL 2008)

  5. Czy naprawdę muszę używać SET XACT_ABORT ON?