Bonjour,

J'ai une requete1 qui me retourne une colonne, mais un nombre variable de lignes suivant une condition du where... Je dois intégrer cette requete1 dans une autre, bcp plus grosse : requete2. De plus, les différentes lignes retournées dans requete1 doivent devenir des colonnes dans requete2. là est mon problème, car j'en ai beaucoup...

Je connais une technique pour des petites requêtes. Mais je me demande s'il n'existe pas quelque chose de plus simple genre un fonction "line2column" a donner dans le SELECT?

Actuellement, dans ma requete1, j'ajoute une colonne "ROWNUM", dans laquelle j'ajoute un numéro de ligne.

Ensuite dans requete2 je fais plein de jointures "LEFT OUTER JOIN" en filtrant chaque fois un numéro de lignes. Exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
LEFT OUTER JOIN (REQUETE1) R1 ON R1.ARTICLE=REQUETE2.ARTICLE AND REQUETE1.ROWNUM=1
LEFT OUTER JOIN (REQUETE1) R2 ON R1.ARTICLE=REQUETE2.ARTICLE AND REQUETE1.ROWNUM=2 
LEFT OUTER JOIN (REQUETE1) R3 ON R1.ARTICLE=REQUETE2.ARTICLE AND REQUETE1.ROWNUM=3 
LEFT OUTER JOIN (REQUETE1) R4 ON R1.ARTICLE=REQUETE2.ARTICLE AND REQUETE1.ROWNUM=4
...
En sachant que REQUETE1 est déjà énorme... J'ai bien 15 "UNION" dedans. Et que je dois retourner 50 colonnes de requete1 dans requete2. Ca fait beaucoup de code pour le résultat souhaité.

Connaissez-vous une façon plus simple ?


Merci d'avance.

Nico