Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta y filtro por cantidad (https://www.clubdelphi.com/foros/showthread.php?t=65062)

MaMu 18-11-2009 00:56:13

Consulta y filtro por cantidad
 
Tengo una tabla con el detalle de venta de ciertos productos, asi:

TABLA A
---------
ID_PRODUCTO
DESCRIPCION
PRECIO
CANTIDAD
FECHA
EMPLEADO

Yo lo que quiero hacer, es mostrar las ultimas 5 ventas de cada producto, como podria hacerlo? Lo que no se, es como limitar la consulto a 5 ventas de cada producto, o las que yo quiera ver ya sean 2 de cada uno, o las ultimas 10.

Desde ya muchas gracias

Axel_Tech 18-11-2009 10:04:53

¿Qué motor de base de datos usas? En Firebird se utiliza la cláusula FIRST, en MySQL se usa LIMIT, en SQL Server se usa TOP...
Para mostrar las últimas 5 ventas ordena por fecha de forma descendente (ORDER BY FECHA DESC).

MaMu 18-11-2009 13:12:00

Cita:

Empezado por Axel_Tech (Mensaje 346878)
¿Qué motor de base de datos usas? En Firebird se utiliza la cláusula FIRST, en MySQL se usa LIMIT, en SQL Server se usa TOP...
Para mostrar las últimas 5 ventas ordena por fecha de forma descendente (ORDER BY FECHA DESC).

Uso SQL 2005 y utilizo TOP, pero no quiero limitar la cantidad global de registros, sino a 5 registros de cada elemento, es decir, los ultimos 5 de tornillos, los ultimos 5 de tuercas, etc, todos juntos en una sola consulta

Axel_Tech 18-11-2009 19:00:58

En una sola consulta no se me ocurre nada, pero sí una alternativa aunque es un poco más engorrosa. Se trata de hacer un procedimiento almacenado.
El funcionamiento sería con un cursor, haciendo una consulta que seleccione cada producto diferente
Código SQL [-]
SELECT DISTINCT DESCRIPCION FROM A
lo almacenarías en una variable
Código SQL [-]
INTO @V_DESCRIPCION
y luego harías un INSERT combinado con SELECT en una tabla temporal de los 5 primeros registros que tienen por descripción el producto por el que vamos (@V_DESCRIPCION)
Código SQL [-]
INSERT INTO TABLA_TEMPORAL 
SELECT TOP (5) ID_PRODUCTO, DESCRIPCION, PRECIO, CANTIDAD, FECHA, EMPLEADO 
FROM A 
WHERE DESCRIPCION = @V_DESCRIPCION ORDER BY FECHA DESC
Y por último una vez ejecutado el SP harías un simple SELECT * de TABLA_TEMPORAL.
Seguramente haya errores de sintaxis y tal pero creo que más o menos te haces una idea.


La franja horaria es GMT +2. Ahora son las 08:32:08.

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