Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta con group by (https://www.clubdelphi.com/foros/showthread.php?t=51594)

vivamotos 20-12-2007 11:49:59

Consulta con group by
 
Saludos,

Mirad tengo el siguiente problema.

En un almacen tengo movimientos de fichas y quisiera realizar la siguiente consulta.

Coger el ultimo movimiento de todas las fichas que pertenecen a un grupo y que me muestre su existencia y su precio en ese ultimo movimiento.

Lo que intento hacer es esto:

Código SQL [-]
SELECT PRODUCTO,MAX(FECHA),EXISTENCIAS
FROM MATERIALES,MOVIMIENTOS
WHERE MATERIALES.CODIGO=MOVIMIENTOS.CODIGO
GROUP BY PRODUCTO
ORDER BY FECHA DESC

Me da error porque en el group by no pongo EXISTENCIAS pero es que si lo pongo me cogerá TODOS los movimientos de cada ficha y solo quiero coger el último movimiento junto sus existencias y precio en ese último movimiento.

Alguna sugerencia?

fjcg02 20-12-2007 14:47:27

Prueba con esto. Puede que no te funcione dependiendo de tu motor de bbdd, pero...


SELECT PRODUCTO,MAX(FECHA),LAST(EXISTENCIAS)
FROM MATERIALES,MOVIMIENTOS
WHERE MATERIALES.CODIGO=MOVIMIENTOS.CODIGO
GROUP BY PRODUCTO
ORDER BY FECHA DESC


Suerte y saludos

vivamotos 20-12-2007 16:18:56

LAST En Firebird
 
No me va, lo que busco es lo que dices pero en FIREBIRD... :(

jachguate 20-12-2007 23:08:23

tu estructura no me queda clara... pero el uso de tablas derivadas (creo que así le llamaron algunos autores... yo prefiero llamarles inline views) te dará una idea que debiera funcionar:

Código SQL [-]
select m1.producto, m1.existnecia, q1.ultima_fecha
  from movimiento m1
       inner join (
         select m2.producto, max(m2.fecha) ultima_fecha
           from movimiento m2
          group by m2.producto
       ) q1
       on m1.producto = q1.producto
      and m1.fecha = q1.ultima_fecha
order by q1.ultima_fecha desc;

Funcionará en firebird 2 o superior. En versiones anteriores, deberás primero crear una vista con la tabla anidada (q1) y reestructurar el query.

Hasta luego.

;)

vivamotos 04-01-2008 10:53:37

Felicidades
 
Me ha servido chavales, muchas grácias :D


La franja horaria es GMT +2. Ahora son las 02:27:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi