Tema: grupo by
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/03/2012, 10:30
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: grupo by

Hola luisbarral22:

Si bien la sintaxis entre MySQL y SQL Server es parecida, también tiene diferencias muy significativas.

En MySQL como lo mencionas, te permite agrupar sólo por un campo, aunque en el SELECT utilices más. En SQL Server, la cláusula GROUP BY debe contener TODOS AQUELLOS CAMPOS QUE APARECEN EN EL SELECT Y QUE NO ESTÉN CONTENIDOS EN UNA FUNCIÓN DE AGRUPACIÓN. Al margen de lo que comenta samardj de listar los campos en lugar de poner *, la explicación del error se ve más clara con esto:

Código:
SELECT COUNT(campo) FROM tabla 
--> es correcto, pues sólo utilizas una función de agrupación

SELECT COUNT(campo) FROM tabla GROUP BY campo
--> es correcto, pues sólo utilizas una función de agrupación, 
el grupo lo haces sólo por un campo.

SELECT campo, COUNT(campo) FROM tabla
--> ERROR, al utilizar campo en el SELECT sepadado junto alguna función 
de agrupación DEBES COLOCARLO TAMBIÉN EN EL GROUP BY

SELECT campo, COUNT(campo) FROM tabla GROUP BY campo
--> es correcto, LOS CAMPOS QUE NO FORMAN PARTE DE ALGUNA FUNCIÓN 
DE AGRUPACIÓN DEBEN APARECER EN TU GROUP BY.

SELECT campo, campo2, COUNT(campo) FROM tabla GROUP BY campo
-->ERROR, este sería más o menos tu caso, el campo2 NO APARECE EN 
LA FUNCIÓN GROUP BY, de ahí el error.

SELECT campo, campo2, COUNT(campo) FROM tabla GROUP BY campo, campo2
-->Correcto, te repito, TODOS LOS CAMPOS QUE SE LISTEN EN EL SELECT Y 
QUE NO ESTÉN DENTRO DE UNA FUNCIÓN DE AGRUPACIÓN SE DEBEN 
CONSIDERAR EN EL GROUP BY.
Saludos
Leo.