Bonjour à tous,

étant donné que les différences d'usage sur oracle et autres sgdb ne sont pas encore très clairs pour moi, j'aimerai que l'on m'explique l' (les) erreur(s) que j'ai faite(s) dans cette requête.

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
SELECT
           V_NG.LIBELLE AS REGION,
           P.CODE_EDP AS Ouvrage,
           TO_CHAR(P.DATE_DEBUT,'DDMMYY') AS DateDébut,
           SUBSTR(CASE WHEN HOUR(P.DATE_DEBUT)=null THEN '0000' ELSE TO_CHAR(P.DATE_DEBUT, 'HH24MI') END, 0, 3) AS HeureDébut,
           TO_CHAR(CASE WHEN HOUR(P.DATE_FIN)=null THEN DateADD(d,-1, P.DATE_FIN) ELSE P.DATE_FIN END,'DDMMYY') AS DateFin,
           SUBSTR(CASE WHEN HOUR(P.DATE_FIN)=null THEN '2400' ELSE TO_CHAR(P.DATE_FIN, 'HH24MI') END, 0, 3) AS HeureFin,
           P.NATURE AS Nature,
           P.VALEUR AS Valeur1,
           P.VALEUR2 AS Valeur2,
           P.CAUSE AS Cause,
           P.COMMENTAIRE AS Description
 
        FROM BASE.TABLE P, TABLE2 EDP, TABLE3 V_NG
        WHERE EDP.REFERENCE = 'REFERENCE'
        AND EDP.DATE_DEBUT = P.DATE_DEBUT_EDP
        AND EDP.CODE_EDP = P.CODE_EDP
        AND V_NG.NUM_REGION = EDP.NUM_REGION
        ORDER BY V_NG.LIBELLE;
Les normes de rendu exigent que les heures soient rendues sur trois numéros, d'où le substr. il y a aussi la règle qui stipule que si l'heure n'est pas indiquée (null) on doit mettre à 00:0 pour date début et 24:0 pour date fin, et retirer un jour.

les jointures sont correctes, elles marchent dans d'autres requêtes.

Merci à tous !