El 05/01/2011 16:27, Guillermo Villanueva escribió:
mmm se me ocurre algo así...
sirve? probalo

select
    (select count(*)
     from historico b
     where b.ref = a.ref and b.oper>=a.oper) cantidad,
    oper,
    ref,
    fecha
from
    historico a
where cantidad between 1 and 3
order by ref, oper desc



Parece que funciona, quedaría así:

select
    operacion, referencia, fecha
from
    historico h
where
    (   select count(*)
        from historico h2
        where h2.producto = h.producto and h2.fecha > =h.fecha
    ) < 4
order by
    referencia, fecha desc


Esta es otra solución parecida, en la que estaba trabajando, y que también funciona:

select
    operacion, referencia, fecha
from
    historico h
where
    operacion in (
        select h2.id
        from historico h2
        where h2.producto = h.producto
        order by fecha desc
        limit 3)
order by
    referencia, fecha desc


Gracias a todos los que os habéis interesado en este problema, aunque me parece que lo ideal seria actualizar y utilizar window functions.


Saludos,

--
Oswaldo Hernández
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a