Hoy estuve tratando de descifrar como lograr que en una sola consulta vinieran las ultimas 5 facturas emitidas por tienda en el 2010.
Después de leer un "poco" y navegar otro poco, quemar un poco de neuronas, etc, etc...
Mi intención era poder hacer algo como
Select periodo, tienda, serie, max(factura)
from CC_ventas
Pero que en lugar de traerme solo una factura me trajera 5 por tienda.
El resultado quedo algo así:
select a.periodo, a.tienda, a.serie, a.factura,
count(*) as ranking
from cc_ventas a, cc_ventas b
where a.periodo = b.periodo
and a.tienda = b.tienda
and a.serie = b.serie
and a.factura <= b.factura and a.periodo = '2010' group by a.periodo, a.tienda, a.serie, a.factura having count(*) <= 5 order by a.periodo, a.tienda, a.serie, count(*) desc;
OJO: dos cosas importantes 1. Si ven la linea and a.factura <= b.factura hace un join de el mismo y todos menos el. Si no desean obtener los últimos sino los primeros registros solo deben de cambiarlo a >=.
2. Si desean traer mas de 5 registros por categoría solo deben de cambiar el valor en la linea: having count(*) <= 5
El código de access que me sirvió de ejemplo esta Aquí.
Espero les sea de utilidad.
No hay comentarios:
Publicar un comentario