Bonjour
J'ai essayé, afin de mieux la comprendre pour la modifier, de réécrire une requete oracle 8i à la mode ANSI (pour Oracle 10g). Malheureusement une erreur est apparue après la réécriture...
Voilà la requete originale :
Et voici la requête que j'ai réécrite :
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
21
22
23
24
25
26
27
28
29 SELECT TO_NUMBER(NVL(PL.HEURE_DEPART,'2359')) AS HEURE_DEPART, PL.COD_LIGNE_EXPEDITION AS LIGNE_EXPEDITION, PL.COD_TOURNEE, T.NOM_TOURNEE, PL.COD_TRANSPORTEUR, TR.NOM_TRANSPORTEUR, SUM(NVL(EX.NB_COLIS_PREVU,0)) AS NB_COLIS_PREVU, SUM(NVL(EX.NB_COLIS_PREPARE,0)) AS NB_COLIS_PREPARE, SUM(NVL(EX.NB_COLIS_PREVU,0)-NVL(EX.NB_COLIS_PREPARE,0)) AS NB_COLIS_RESTANT, SUM(DECODE(EX.COD_SOC_COM, '5', 1, 0)) AS NB_COMMANDE, SUM(DECODE(EX.COD_SOC_COM, '5', 1, 0) *(1 - NVL(EX.IS_PREVISION, 0))) AS NB_SERVIS, SUM(DECODE(EX.COD_SOC_COM, '5',1,0) * NVL(EX.IS_BL_RECU,0)) AS NB_BL, SUM(DECODE(EX.COD_SOC_COM, '5', 1, 0))-SUM(DECODE(EX.COD_SOC_COM ,'5',1,0) * NVL(EX.IS_BL_RECU,0)) AS TOT, SUM(decode(ELC.COD_SOC_COM, '5', 1, 0)) AS IS_EDITE FROM REF_EXPEDITION EX, REF_PLAN_LIGNE PL, REF_EDITE_LISTE_COLISAGE ELC, REF_TOURNEES_TRANSPORT T, REF_TRANSPORTEURS TR WHERE EX.DATE_EXPEDITION = ELC.DATE_EDITION_LISTE (+) AND EX.COD_SOC_COM = ELC.COD_SOC_COM (+) AND EX.NUM_TOURNEE = ELC.COD_TOURNEE (+) and EX.NUM_TOURNEE = PL.COD_TOURNEE and EX.NUM_TOURNEE = T.COD_TOURNEE AND PL.COD_TRANSPORTEUR = TR.COD_TRANSPORTEUR AND EX.DATE_EXPEDITION = TO_DATE('08/12/2007','dd/mm/yyyy') AND DATE_DEBUT <= TO_DATE('08/12/2007','dd/mm/yyyy') AND DATE_FIN >= TO_DATE('08/12/2007','dd/mm/yyyy') AND COD_JOUR IN (0,1) AND PL.COD_SITE_LOGISTIQ = '907' AND PL.COD_TOURNEE in (214,221,286,295) AND (EX.NO_ZONE_TARIF_TRANSPORT = '5' OR EX.COD_SOC_COM = '5') GROUP BY PL.HEURE_DEPART, PL.COD_LIGNE_EXPEDITION, PL.COD_TOURNEE, T.NOM_TOURNEE, PL.COD_TRANSPORTEUR, TR.NOM_TRANSPORTEUR
Une erreur "ORA-00918: column ambiguously defined" est venue se glisser entretemps alors que toutes mes colonnes sont préfixées... Il me semble pourtant que cette erreur apparaît lorsqu'on ne préfixe pas les colonnes avec les noms de table et que deux tables ont des colonnes au nom identique non ?
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 SELECT TO_NUMBER(NVL(PL.HEURE_DEPART,'2359')) AS HEURE_DEPART, PL.COD_LIGNE_EXPEDITION AS LIGNE_EXPEDITION, PL.COD_TOURNEE, T.NOM_TOURNEE, PL.COD_TRANSPORTEUR, TR.NOM_TRANSPORTEUR, SUM(NVL(EX.NB_COLIS_PREVU,0)) AS NB_COLIS_PREVU, SUM(NVL(EX.NB_COLIS_PREPARE,0)) AS NB_COLIS_PREPARE, SUM(NVL(EX.NB_COLIS_PREVU,0)-NVL(EX.NB_COLIS_PREPARE,0)) AS NB_COLIS_RESTANT, SUM(DECODE(EX.COD_SOC_COM, 5, 1, 0)) AS NB_COMMANDE, SUM(DECODE(EX.COD_SOC_COM, 5, 1, 0) *(1 - NVL(EX.IS_PREVISION, 0))) AS NB_SERVIS, SUM(DECODE(EX.COD_SOC_COM, 5, 1, 0) * NVL(EX.IS_BL_RECU,0)) AS NB_BL, SUM(DECODE(EX.COD_SOC_COM, 5, 1, 0))-SUM(DECODE(EX.COD_SOC_COM ,'5',1,0) * NVL(EX.IS_BL_RECU,0)) AS TOT, SUM(decode(ELC.COD_SOC_COM, 5, 1, 0)) AS IS_EDITE FROM REF_EXPEDITION EX RIGHT OUTER JOIN REF_EDITE_LISTE_COLISAGE ELC ON EX.DATE_EXPEDITION = ELC.DATE_EDITION_LISTE RIGHT OUTER JOIN REF_EDITE_LISTE_COLISAGE ELC ON EX.COD_SOC_COM = ELC.COD_SOC_COM RIGHT OUTER JOIN REF_EDITE_LISTE_COLISAGE ELC ON EX.NUM_TOURNEE = ELC.COD_TOURNEE INNER JOIN REF_PLAN_LIGNE PL ON EX.NUM_TOURNEE = PL.COD_TOURNEE INNER JOIN REF_TRANSPORTEURS TR ON PL.COD_TRANSPORTEUR = TR.COD_TRANSPORTEUR INNER JOIN REF_TOURNEES_TRANSPORT T ON EX.NUM_TOURNEE = T.COD_TOURNEE WHERE EX.DATE_EXPEDITION = TO_DATE('08/12/2007','dd/mm/yyyy') AND PL.DATE_DEBUT <= TO_DATE('08/12/2007','dd/mm/yyyy') AND PL.DATE_FIN >= TO_DATE('08/12/2007','dd/mm/yyyy') AND PL.COD_JOUR IN (0,1) AND PL.COD_SITE_LOGISTIQ = '907' AND PL.COD_TOURNEE IN (214,221,286,295) AND (EX.NO_ZONE_TARIF_TRANSPORT = '5' OR EX.COD_SOC_COM = '5') GROUP BY PL.HEURE_DEPART, PL.COD_LIGNE_EXPEDITION, PL.COD_TOURNEE, T.NOM_TOURNEE, PL.COD_TRANSPORTEUR, TR.NOM_TRANSPORTEUR
Merci de votre aide
David
Partager