Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como usar group by na consulta do SQL Server?


Em geral, uma vez que você inicia o GROUPing, cada coluna listada em seu SELECT deve ser uma coluna em seu GROUP ou algum agregado dela. Digamos que você tenha uma tabela assim:
| ID | Name        | City        |
|  1 | Foo bar     | San Jose    |
|  2 | Bar foo     | San Jose    |
|  3 | Baz Foo     | Santa Clara |

Se você quisesse obter uma lista de todas as cidades em seu banco de dados e tentasse:
SELECT * FROM table GROUP BY City

...isso falharia, porque você está solicitando colunas (ID e Nome) que não estão na cláusula GROUP BY. Você poderia em vez disso:
SELECT City, count(City) as Cnt FROM table GROUP BY City

... e isso faria com que você:
| City        | Cnt |
| San Jose    |  2  |
| Santa Clara |  1  |

...mas NÃO obteria seu ID ou Nome. Você pode fazer coisas mais complicadas com, por exemplo, subselects ou auto-junções, mas basicamente o que você está tentando fazer não é possível conforme declarado. Divida seu problema ainda mais (como você deseja que os dados se pareçam?), e vá a partir daí.

Boa sorte!