Bonjour,
J'ai une requête relativement compliquée (en tout cas pour moi) entre 8 tables (un select)
Je dois remonter un certain nombre de données + la somme de chaque tender (moyen de payement).
Le problème est que naturellement, mon SUM se multiplie... 8 fois...
J'ai parcouru des forums à la recherche de la solution et je retrouve des solutions de ce genre :
Mais la j'ai 8 tables et 263 champs, si je dois mettres tous les champs dans le select + tous les champs dans le from ca va faire un peu lourd et je ne vois pas comment faire d'ailleurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select ..... from ( ...group by on invoice) a, (...group by on payment) b where a.custid=b.custid
J'ai essayé les LEFT OUTER JOIN mais ca ne marche pas.
Ma requête se présente comme ceci :
Je cherche donc comment faire cette jointure pour que ca marche...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SELECT i.invc_sid AS invc_sid, ... SUM(CASE WHEN ( t.tender_type = 10) THEN t.amt END) AS GiftCard, SUM(CASE WHEN ( t.tender_type = 11) THEN t.amt END) AS DebitCard, SUM(CASE WHEN ( t.tender_type = 12) THEN t.amt END) AS FC, SUM(CASE WHEN ( t.tender_type = 13) THEN t.amt END) AS Traveler, SUM(CASE WHEN ( t.tender_type = 14) THEN t.amt END) AS CheqFC FROM INVOICE i, INVC_COMMENT ic, INVC_TENDER t, ... WHERE i.invc_sid = ic.invc_sid (+) AND i.invc_sid = t.invc_sid (+) AND i.invc_sid = c.invc_sid (+) ... GROUP BY i.invc_sid
Merci de votre aide.
Partager