ROW_NUMBER() dans DB2
Comment utiliser la fonction ROW_NUMBER() dans la clause where dans une base de données DB2.
J'ai essayé ci-dessous, mais il ne fonctionne pas:
SELECT * FROM CSPAPP.LOCATIONS
WHERE (ROW_NUMBER() OVER(ORDER BY LOCATION)) BETWEEN 100 AND 200
Il a donné d'erreur : Invalid utilisation de la fonction d'agrégation ou OLAP fonction.
J'ai aussi essayé avec followiong façons :
SELECT (ROW_NUMBER() OVER(ORDER BY LOCATION)) AS RN ,* FROM CSPAPP.LOCATIONS
WHERE RN < 200
SELECT (ROW_NUMBER() OVER(ORDER BY LOCATION)) AS RN ,LOCATION FROM CSPAPP.LOCATIONS
WHERE RN < 200
OriginalL'auteur Mandar | 2014-11-28
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire référence à un alias sur le même niveau où il est défini. Vous avez besoin de mettre cela dans une table dérivée:
"ne fonctionne pas" n'est pas valide DB2 message d'erreur.
oups.Désolé. L'erreur était : "Unexpected token * a été trouvé après" par emplacement) de rn.Attendu Jetons peuvent inclure :<select_sublist>." Je ne peux pas entrer dans chaque colonne, car il y a environ 600 colonnes dans le tableau.J'ai donc à utiliser * pour sélectionner toutes les colonnes d'un seul coup.
Peut-être
location
est un mot réservé dans DB2, je ne sais pasPuis préfixe de la
*
:select row_number() ... , table_name.* from table_name
(ou utiliser un alias)OriginalL'auteur a_horse_with_no_name
J'utilise quelque chose de ce genre lors de la sélection des basé sur le numéro de ligne dans DB2 iSeries:
Si vous êtes uniquement intéressé par l'1 zone que vous pouvez être en mesure d'attribuer un nom pour le sélectionner et référencer les champs:
OriginalL'auteur clutton
Vous pouvez essayer de RÉCUPÉRER 200 PREMIÈRES LIGNES SEULEMENT, au lieu de la fonction row_number. Écrivez votre sélectionnez comme vous le feriez normalement, sans ROW_NUMBER, commande par ce que vous avez besoin et de CHERCHER d'ABORD x.
la sélection de toutes les colonnes avec des "*" n'est pas une bonne pratique surtout si vous avez 600+ colonnes (et que par lui-même est une mauvaise conception de la base de données).
OriginalL'auteur Sinisa Hajnal
Sans utiliser la fonction row_number ():
OriginalL'auteur Md. Kamruzzaman
Vous pouvez faire référence à un alias sur le même niveau où il est défini. Vous avez besoin de mettre cela dans une table dérivée:
Mais vous devez comprendre
*
n'est jamais une pratique exemplaire. Vous devez utiliser le nom de la colonne plutôt que*
(L.col1
).OriginalL'auteur Ravindra Kumar