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

Select, ya no me da la cabeza con el count y el group by

Estas en el tema de Select, ya no me da la cabeza con el count y el group by en el foro de SQL Server en Foros del Web. Hola, porfa ayudenme con esto, se los explico lo más resumido posible. Tengo dos tablas cabecera/detalle: Cmp_Cotizacion IdEmpresa int PK IdOficina int PK IdCotizacion int ...
  #1 (permalink)  
Antiguo 02/04/2007, 15:57
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Select, ya no me da la cabeza con el count y el group by

Hola, porfa ayudenme con esto, se los explico lo más resumido posible. Tengo dos tablas cabecera/detalle:

Cmp_Cotizacion
IdEmpresa int PK
IdOficina int PK
IdCotizacion int PK
IdParticipanteProv int --Codigo del proveedor
FechaVencimiento DateTime --Fecha de vencimiento de la cotizacion

Cmp_DetalleCotizacion
IdEmpresa int PK
IdOficina int PK
IdCotizacion int PK
IdDetCotizacion int PK
IdItem int --Codigo del artículo

Según el modelo se pueden ingresar muchas cotizaciones de un proveedor determinado. Y yo lo que necesito es saber cuantas cotizaciones vigentes existen de un producto (campo IdItem) determinado de una empresa determinada.

El select que yo he podido hacer es lo siguiente:

Código:
SELECT	
	Idparticipanteprov,
	max(fechavencimiento)			

FROM 	Cmp_Cotizacion INNER JOIN
	Cmp_DetalleCotizacion ON 
	Cmp_Cotizacion.IdEmpresa = Cmp_DetalleCotizacion.IdEmpresa
AND 	Cmp_Cotizacion.IdOficina = Cmp_DetalleCotizacion.IdOficina 
AND 	Cmp_Cotizacion.IdCotizacion = Cmp_DetalleCotizacion.IdCotizacion

WHERE 	Cmp_Cotizacion.IdEmpresa=2	
AND	Cmp_DetalleCotizacion.IdItem=1832
AND	Cmp_Cotizacion.fechavencimiento>=GETDATE()
GROUP BY IdParticipanteProv
Con esto traigo todos los proveedores que tienen cotizaciones vigentes, el select me trae cuatro registros, por cada registro me muestra el código del proveedor y fecha maxima de cotizacion vigente. Pero yo necesito saber cuantas cotizaciones vigentes hay por producto, no cuales. Necesito que el select me devuelva el numero 4

Se puede verdad?

Alguna vez lo aprendí pero lo que no se práctica se olvida
  #2 (permalink)  
Antiguo 02/04/2007, 18:08
 
Fecha de Ingreso: enero-2002
Mensajes: 41
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Select, ya no me da la cabeza con el count y el group by

SELECT
Idparticipanteprov,
count(*)

FROM Cmp_Cotizacion INNER JOIN
Cmp_DetalleCotizacion ON
Cmp_Cotizacion.IdEmpresa = Cmp_DetalleCotizacion.IdEmpresa
AND Cmp_Cotizacion.IdOficina = Cmp_DetalleCotizacion.IdOficina
AND Cmp_Cotizacion.IdCotizacion = Cmp_DetalleCotizacion.IdCotizacion

WHERE Cmp_Cotizacion.IdEmpresa=2
AND Cmp_DetalleCotizacion.IdItem=1832
AND Cmp_Cotizacion.fechavencimiento>=GETDATE()
GROUP BY IdParticipanteProv
__________________
"Si exagerasemos nuestras alegrías como hacemos con nuestras tristezas, nuestros problemas perderían importancia"
Anatole France
  #3 (permalink)  
Antiguo 03/04/2007, 07:59
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Select, ya no me da la cabeza con el count y el group by

Hola delfin azul.... gracias por tu ayuda pero no funca Al ponerle el count(*) en vez del max(fechavencimiento) lo que hace es mostrarme por proveedor cuantas cotizaciones vigentes tiene, pero necesito que un proveedor tenga mas de una cotización vigente solo me tome en cuenta la última. De verdad que ta difícil, ya estoy empezando a creer que no se puede
  #4 (permalink)  
Antiguo 06/04/2007, 10:44
 
Fecha de Ingreso: mayo-2003
Ubicación: Buenos Aires
Mensajes: 97
Antigüedad: 20 años, 11 meses
Puntos: 0
Re: Select, ya no me da la cabeza con el count y el group by

¿No deberias agregarle max(fechavencimiento) al select de delfin y listo?
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 06:41.