J'essaie de limiter le nombre de lignes qui seraient affichées lors de l'exécution de ma requête. Quand je lance le code ci-dessous dans SQL Developer, il renvoie l'erreur manquant parenthèse fermante ..Oracle sql parenthèse droite manquante
select * from
(select row_number() over (order by rescode) rnum, a.* from
(
SELECT *
FROM trans z
LEFT JOIN emails a
ON z.email1_hist_id=a.email_id
or z.email2_hist_id=a.email_id
) a
) where rnum between 1 and 50;
J'ai essayé d'exécuter la requête à l'intérieur:
SELECT *
FROM trans z
LEFT JOIN emails a
ON z.email1_hist_id=a.email_id
or z.email2_hist_id=a.email_id
et il fonctionne très bien. D'un autre côté, j'ai essayé de supprimer la partie OU de ma requête et j'ai inclus la requête de lignes de limite et elle renvoie le nombre de lignes que j'ai spécifié.
Qu'est-ce qui ne va pas dans mon code?
Je voudrais aussi essayer la partie qui commence par 'select row_number()' et se termine par ') a'. Quoi qu'il en soit, l'erreur semble stupide. Ce peut être probablement l'arrangement particulier de certains éléments de votre requête qui provoque l'erreur. Personnellement j'essaierais ceux-ci (un par un ou en combinaisons): mettre 'a. *' Avant 'row_number() ...'; en laissant le '(' avant 'select row_number() ...' sur une ligne séparée, en laissant le ')' devant 'where rnum ...' sur une ligne séparée; inversement, placer 'SELECT *' du select le plus interne sur la même ligne que le précédent '('; fusionne de la même façon les lignes de ') a' et') où rnum ... '. –