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

Oracle Discussion :

Fonction SQL Pour valeur nulle


Sujet :

Oracle

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut Fonction SQL Pour valeur nulle
    Bonjour,

    J'ai la requête suivante qui fait une somme par rapport à un ID.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT ID, DECODE(ID,'a','30','t','10','mo','20', ID) ID_P , SUM(AMOUNT) SUM_P
    FROM Table_P				  			 GROUP BY ID, DECODE(ID,'a','30','t','10','mo','20', ID)
    Cependant si par exemple l'id 30 ne se trouve pas dans la table, je n'aurais rien.
    Je voudrais pouvoir voir
    ID SUM
    30 0
    20 10.

    Est ce possible?
    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    En faisant un nvl sur sum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ID, DECODE(ID,'a','30','t','10','mo','20', ID) ID_P , 
        nvl(SUM(AMOUNT),0) SUM_P
    FROM Table_P
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  3. #3
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Si la valeur 30, n'existe pas ORACLE ne peut pas te donner de somme, comment faire un calcule sur des données non présente en base ?

    Il faut donc le forcer ORACLE à prendre les valeurs mêmes si elle existe pas
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with cor_id as 
    (select 'a' id ,'30' val from dual union all
     select 't' id ,'10' val from dual union all
     select 'mo' id ,'20' val from dual )
    SELECT ID, val , nvl(SUM(AMOUNT),0) SUM_P
    FROM Table_P p, cor_id c
    where p.id(+) = c.id
    GROUP BY ID, val

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    OK cela fonctionne très bien.
    Je n'avais jamais utilisé le WITH ... AS.
    Merci beaucoup!

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Moi je trouve cela tordu comme méthode... Tu ne vas pas mettre dans le with toutes les valeurs qui n'existent pas dans ta base
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  6. #6
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Citation Envoyé par plaineR
    Moi je trouve cela tordu comme méthode... Tu ne vas pas mettre dans le with toutes les valeurs qui n'existent pas dans ta base
    Oui Attention l'exemple donné est juste pour argumenter le fait d'une somme sur des données inexisatantes est imposssible.

    Il faut bien entendu travailler sur l'exemple, il n'est pas LA solution !

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

Discussions similaires

  1. comment exclure les champs qui ont pour valeur NULL
    Par agur29 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/10/2007, 19h23
  2. [MySQL] problème de fonction SQL pour modification de table
    Par Purple Haze dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/02/2007, 17h00
  3. creation d'une fonction SQL pour generer du XML
    Par MuldyMath dans le forum Oracle
    Réponses: 3
    Dernier message: 07/06/2006, 11h22
  4. fonction replace et valeurs null
    Par Oluha dans le forum ASP
    Réponses: 4
    Dernier message: 24/11/2005, 15h55
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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