santiago14
04-09-2008, 03:49:12
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:
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.
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:
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.