sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo usar group by en la consulta de SQL Server?

En general, una vez que comience a agrupar, cada columna enumerada en su SELECCIÓN debe ser una columna en su GRUPO o algún agregado del mismo. Digamos que tienes una tabla como esta:

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

Si desea obtener una lista de todas las ciudades en su base de datos e intenta:

SELECT * FROM table GROUP BY City

... eso fallaría, porque está solicitando columnas (ID y Nombre) que no están en la cláusula GROUP BY. En su lugar, podrías:

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

...y eso te daría:

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

... pero NO obtendría su identificación o nombre. Puedes hacer cosas más complicadas con, p. subselecciona o se une a sí mismo, pero básicamente lo que está tratando de hacer no es posible como se indica. Desglose aún más su problema (¿cómo quiere que se vean los datos?) y continúe desde allí.

¡Buena suerte!