Después de de nuestra extensa selección de información dimos con la solución esta contratiempo que pueden tener ciertos de nuestros lectores. Te dejamos la solución y esperamos servirte de mucha ayuda.
Solución:
Suponiendo que create_time contiene la hora en que se creó el pedido y desea los 100 clientes con los últimos pedidos, puede:
- agregue create_time en su consulta más interna
- ordenar los resultados de su consulta externa por el
create_time desc
- agregue una consulta más externa que filtre las primeras 100 filas usando
ROWNUM
Consulta:
SELECT * FROM (
SELECT * FROM (
SELECT
id,
client_id,
create_time,
ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
)
WHERE rn=1
ORDER BY create_time desc
) WHERE rownum <= 100
ACTUALIZACIÓN para Oracle 12c
Con la versión 12.1, Oracle introdujo consultas Top-N "reales". usando el nuevo FETCH FIRST...
sintaxis, también puede utilizar:
SELECT * FROM (
SELECT
id,
client_id,
create_time,
ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
)
WHERE rn = 1
ORDER BY create_time desc
FETCH FIRST 100 ROWS ONLY)
deberías usar rownum en Oracle para hacer lo que buscas
where rownum <= 100
mira también esas respuestas para ayudarte
limite en oraculo
seleccione arriba en Oracle
seleccione arriba en Oracle 2
Como dijo Moneer Kamal, puedes hacerlo simplemente:
SELECT id, client_id FROM order
WHERE rownum <= 100
ORDER BY create_time DESC;
Observe que el pedido está hecho. después obtener la fila 100. Esto podría ser útil para quien no quiere ordenar.
Puntuaciones y comentarios
Nos puedes sostener nuestro cometido dejando un comentario y dejando una puntuación te estamos eternamente agradecidos.