J'ai un gros problème avec une déclaration SQL dans Oracle. Je veux sélectionner les 10 premiers enregistrements classés par STORAGE_DB qui ne sont pas dans une liste d'une autre instruction select.
Celui-ci fonctionne bien pour tous les enregistrements :
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID
FROM HISTORY
WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009')
Mais quand j'ajoute
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
Je reçois une sorte d'enregistrement "aléatoire". Je pense que c'est parce que la limite se met en place avant l'ordre.
Quelqu'un a-t-il une bonne solution ? L'autre problème : cette requête est très lente (plus de 10 000 enregistrements).
0 votes
Duplicata probable : stackoverflow.com/questions/2306744/
1 votes
Duplicata possible de Comment limiter le nombre de lignes renvoyées par une requête Oracle après avoir été ordonnée ?