Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

grupo by

Estas en el tema de grupo by en el foro de SQL Server en Foros del Web. select * from SAITEMFAC, SAPROD where SAITEMFAC.CodItem = SAPROD.CodProd esta es mi duda.. em trae muchos registros.. quiero agruparlos por codigo.. simple no? pero me ...
  #1 (permalink)  
Antiguo 03/03/2012, 08:23
 
Fecha de Ingreso: marzo-2012
Mensajes: 22
Antigüedad: 12 años, 2 meses
Puntos: 0
grupo by

select * from SAITEMFAC, SAPROD
where SAITEMFAC.CodItem = SAPROD.CodProd

esta es mi duda.. em trae muchos registros.. quiero agruparlos por codigo.. simple no? pero me sale error y me pide que meta todos los campos de la funcion select...

me pregunto? entonces que hace esto? NADA! vengo de mysql y era tan sencillo.. ahora no puedo ni agrupar
  #2 (permalink)  
Antiguo 04/03/2012, 07:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 120
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: grupo by

debes especificar los campos que quieres consultar.

select SAITEMFAC.nombre, SAPROD.cedula from SAITEMFAC, SAPROD
where SAITEMFAC.CodItem = SAPROD.CodProd

mas o menos asi.
  #3 (permalink)  
Antiguo 05/03/2012, 10:30
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
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.
  #4 (permalink)  
Antiguo 05/03/2012, 14:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 22
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: grupo by

Duda mas que resuelta muchas gracias

Etiquetas: grupo, registro, select, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:46.