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

Langage SQL Discussion :

Fonction NVL et SUM réunis


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut Fonction NVL et SUM réunis
    hola tous,

    j utilise la fonction NVL afin d eviter dans mon select les valeurs NULL ! comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT NVL(SUM(A9060),0)
    FROM VDL331
    WHERE A0090 = '04001'
      AND A1010 = '000010'
      AND A6000 = '001'
      AND A0230 = 'USD'
      AND A9140 <> 3
    GROUP BY A9060
    Resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      -5046460
      -1000000
    tant dis que moi j attens plutot une addition genre quand j utilise pas le NVL ca donne le resultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT SUM(A9060) FROM VDL331
    WHERE A0090 = '04001'
      AND A1010 = '000010'
      AND A6000 = '001'
      AND A0230 = 'USD'
      AND A9140 <> 3;
     
     
      -6046460
    ce qui veut dire que sans le NVL l addition se fait bien !!

    mais je suis confronté a un autre pb si je n utilise pas le NVL a savoir si l une de mes colonnes se trouve NULL la encore ma requete se plante !!!

    c est pour cela que j essai de remplacer les eventuels resultats NULL par zero afin d obtenir une addition correcte !!!

    de l aide svouplai

    merci beaucoup

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Et en faisant SUM(NVL(colonne,0)) ?

    Au passage, NVL est spécifique à Oracle. La fonction normalisée se nomme COALESCE.

  3. #3
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Ce n'est pas sans le NVL que la somme se passe bien, c'est sans le GROUP BY

    Bon courage

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    hola,

    merci pour vos reponses

    ben le sum(nvl(a9060,a)) fonctionne egalement mais sans le group by, c est effectivement le group by qui pose porbleme !!

    en fait j utilise cette requete dans un prog cobol et avec le NVL je palnte !
    la solution de contournement etait d ajouter le group by et la c est la somme qui ne se fait pas et je me retrouve avec une erreur de resultat multiples !!!!

    y a t il un autre moyen ? sachant que le NVL m est indispensable !!??

  5. #5
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Je suppose que vous utilisé ORACLE (NVL oblige)

    Donc un descriptif des tables, un jeu d'essais et un exemple concret pourrait donner beaucoup plus d'elements de reponses.

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    ben l ami merci pour ton aide car sans le group by cela fonctionne correctement maintenant ....

    je n arrive plus a reproduire l erreur que j avais obtenu sans le group by !!!!

    je continue mes tests et je reviens si un pb !

    a pliche et merci

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

Discussions similaires

  1. index et la fonction nvl
    Par Mehdilis dans le forum Oracle
    Réponses: 5
    Dernier message: 29/09/2007, 02h27
  2. La fonction NVL de Oracle et JDBC
    Par santana2006 dans le forum JDBC
    Réponses: 3
    Dernier message: 18/09/2006, 14h39
  3. [SQL] fonction NVL
    Par bmoon dans le forum Oracle
    Réponses: 2
    Dernier message: 17/03/2006, 11h54
  4. Un group by sur une fonction nvl
    Par Arkadius dans le forum Oracle
    Réponses: 3
    Dernier message: 21/10/2005, 11h47
  5. Equivalent de la fonction NVL sous oracle en SQL-server
    Par MorbidAngel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/09/2005, 11h50

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