Requête SQL Avec la fonction Row_Number, order by et la clause where

J'ai de la requête SQL suivante:

select
     ID, COLUMN1, COLUMN2
from
     (select ID, COLUMN1, COLUMN2, row_number() over (order by 2 DESC) NO from A_TABLE)
where
     NO between 0 and 100

Ce que je suis en train de faire est de sélectionner les 100 premiers enregistrements de la requête

select ID, COLUMN1, COLUMN2 from ATABLE order by 2 DESC

Et voici les problèmes:

  1. Apparemment, le order by clause n'est pas de travail. J'ai remarqué que j'ai à ajouter un autre order by 2 DESC clause, juste après (...) from ATABLE, pour ma requête fonctionne. Est-il quelque chose que je fais mal? Ou est-ce un comportement attendu?
  2. Comment puis-je ajouter un where clause? Disons que j'ai besoin de sélectionner seulement les 100 premiers enregistrements de la table where COLUMN1 like '%value%'. J'ai essayé d'ajouter la clause where après (...) from ATABLE mais il se produit une erreur...

Aider? Merci.

PS: je suis sous Oracle 10g R2.

Vous pouvez réellement comprendre l'autre des requêtes que vous avez essayé au lieu de simplement expliquer? Il pourrait rendre plus facile de repérer le problème.

OriginalL'auteur Bogdan M | 2009-05-07