IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DB2 Discussion :

sum dans sql


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Par défaut sum dans sql
    Bonjour tout le monde,

    Dans un programme que je maintiens, j'ai la requête sur le modèle suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EXEC SQL
        SELECT
            SUM(ZONE1)
          , SUM(ZONE2)
        INTO
            :WSUM-ZONE1:WSUM-ZONE1-I
          , :WSUM-ZONE2:WSUM-ZONE2-I
        FROM TABLE1, TABLE2
       WHERE (TAB1CLE1 = :WDIS-TAB1CLE1
          AND TAB1CLE2 >= :WDIS-TAB1CLE2
          AND TAB2CLE1 = TAB1CLE1
          AND TAB2CLE2 = TAB2CLE2)
    END-EXEC
    et après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    IF WSUM-ZONE1-I = -1
        MOVE ZEROES TO WSUM-ZONE1
    END-IF.
    IF WSUM-ZONE2-I = -1
        MOVE ZEROES TO WSUM-ZONE2
    END-IF.
    Quelqu'un sait-il à quoi correspondent les champs suffixés "-I" et à ce que veulent dire les tests fais dessus après la requête?

    Merci pour vos lumières
    Mat

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Il s'agit d'indicateurs qui vont te dire si le champ associé est NULL ou pas.

    Dans l'exemple que tu montres et que je reprends en partie ci-dessous, si l'indicateur WSUM-ZONE1-I a la valeur -1 après exécution du SELECT, cela veut dire que le champ WSUM-ZONE1 qui y est associé est NULL. Cet indicateur prend la valeur 0 dans le cas contraire (champ pas NULL).
    Idem pour le champ WSUM-ZONE2 bien entendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF WSUM-ZONE1-I = -1
        MOVE ZEROES TO WSUM-ZONE1
    END-IF.
    Remarques
    Bien noter que champs et indicateurs ne sont volontairement PAS séparés par une virgule.

    On aurait pu établir également la SELECT avec la fonction intégrée COALESCE() ( ou IFNULL() ) comme suit, ce qui aurait en pratique évité les deux tests subséquents sur les valeurs NULL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EXEC SQL
    SELECT
    COALESCE(SUM(ZONE1), 0),
    COALESCE(SUM(ZONE2), 0)
    INTO
    :WSUM-ZONE1:WSUM-ZONE1-I,
    :WSUM-ZONE2:WSUM-ZONE2-I
    FROM TABLE1, TABLE2
    WHERE (TAB1CLE1 = :WDIS-TAB1CLE1
    AND TAB1CLE2 >= :WDIS-TAB1CLE2
    AND TAB2CLE1 = TAB1CLE1
    AND TAB2CLE2 = TAB2CLE2)
    END-EXEC

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Par défaut
    Merci beaucoup!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction agrégat SUM dans calcul SQL
    Par othke dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/02/2010, 10h05
  2. Probleme de sum dans une requete SQL
    Par cana13 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/11/2009, 09h42
  3. [SQL] problème de SUM dans un update
    Par _Jérôme_ dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/03/2007, 18h22
  4. Pb sur SUM dans requête SQL exécutée sous VB
    Par MAKSIM dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/11/2006, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo