Ver Mensaje Individual
  #1  
Antiguo 04-09-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 585
Reputación: 23
santiago14 Va por buen camino
Question Group by en firebird

Estoy desde hace rato tratando de resolver la cuestión y no doy en la tecla. Tengo dos tablas:

Insumos
cod_insumo, descripcion, estado, cod_proveedor

Listas_Precios
cod_lista, cod_insumo, precio, tasa_gcia, fecha_ini

Aquí cod_insumo viene desde Insumo como clave externa. fecha_ini indica desde cuando el insumo tendrá el precio "precio".

Lo que quiero ahora es mostrar la lista de precios del día en curso. Lo hago de la siguiente manera:

Código SQL [-]
Select i.cod_insumo, i.descripcion, 
tasa_gcia, MAX(lp.fecha_ini)

From Insumos i LEFT OUTER JOIN Listas_Precios lp ON i.cod_insumo = lp.cod_insumo
Where i.cod_proveedor = 2
and i.estado = 'A' and lp.fecha_ini <= current_date
Group by  i.cod_insumo

La cuestión sería que para obtener el precio actual hay que pedir que fecha_ini <= current_date y fecha_ini sea Máxima entre todas las fechas posibles, pues se podrían poner mas registros de precios para el mismo producto variando la fecha de inicio para que justamente haya un cambio automático del precio al cambiar el día.

Esta consulta no funciona, pues me dice que en el Group by le faltan campos del Select para agrupar. Es decir, pide que estén "cod_insumo, descripcion,
tasa_gcia" si hago eso no puedo agrupar de la manera "correcta" y me aparece por ejemplo el mismo producto con dos precios distintos, esto es claro porque en el agrupamiento cambia el campo precio y ya lo considera como de otro conjunto. La consulta como la muestro sería la forma de resolver el problema, ahora, en firebird no funciona. ¿Cómo podría variarse esta consulta para obtener el resultado?

Espero haber sido claro. Sino pregunten y lo hago lo mas detallado posible.

Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita