Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come utilizzare il raggruppamento nella query di SQL Server?

In generale, una volta avviato il GRUPPO, ogni colonna elencata nel tuo SELECT deve essere una colonna nel tuo GRUPPO o un suo aggregato. Supponiamo che tu abbia una tabella come questa:

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

Se volevi ottenere un elenco di tutte le città nel tuo database e hai provato:

SELECT * FROM table GROUP BY City

...che fallirebbe, perché stai chiedendo colonne (ID e Nome) che non sono nella clausola GROUP BY. Potresti invece:

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

...e questo ti porterebbe:

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

...ma NON ti darebbe ID o Nome. Puoi fare cose più complicate con ad es. sottoseleziona o si unisce automaticamente, ma in pratica ciò che stai cercando di fare non è possibile come affermato. Analizza ulteriormente il tuo problema (come vuoi che appaiano i dati?) e vai da lì.

Buona fortuna!