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

Access Discussion :

Somme avec nz sauf si tous sont nuls?


Sujet :

Access

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 273
    Points : 258
    Points
    258
    Par défaut Somme avec nz sauf si tous sont nuls?
    Bonjour,

    J'ai une requete qui donne en gros:

    Date Quantity1 Quantity2 Quantity3 Quantity4 ...
    03/07 200 NULL 0 NULL ...
    03/07 150 200 300 NULL ...


    Je voudrais recuperer dans une table ou n'importe quoi (pour en faire un graphique) la somme des quantites(i) pour tous les records, mais que
    - quand toutes les quantityi sont non nulles, il fasse la somme
    - quand une ou plusieurs est nulle, il fasse la somme avec nz
    - MAIS quand toutes sont nulles, il laisse null

    Autrement dit qu'on ait:

    Date Quantity1 Quantity2 Quantity3 Quantity4 ...
    03/07 350 200 300 NULL ...

    Je ne sais pas comment lui dire (en VBA ou en requete) "regarde si pour tous les records, Quantityi est null, si oui marque null, sinon fais la somme avec nz" Est-ce que vous avez une suggestion?

  2. #2
    Membre actif
    Avatar de GAGNON
    Inscrit en
    Septembre 2003
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 201
    Points : 201
    Points
    201
    Par défaut
    Salut,

    Tu veux voir le texte 'NULL' ou la valeur null ?

    Si c'est la valeur, il faut mettre un GROUPE BY dans ta requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.date, Sum(Table1.Qte1) AS SomQte1, Sum(Table1.Qte2) AS SomQte2, Sum(Table1.Qte3) AS SomQte3, Sum(Table1.Qte4) AS SomQte4
    FROM Table1
    GROUP BY Table1.date;
    le résultat est celui que tu recherches ...
    La pensée n'est qu'un éclair au milieu de la nuit. Mais c'est cet éclair qui est tout.
    Henri Poincaré

  3. #3
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Tu peux aussi essayé avec la fonction Iif dans une requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    SELECT Iif(Sum(nz(quantity))<>null,Sum(nz(quantity)),"NULL")
    Regarde dans l'aide Access sur la fonction Iif car je ne sais plus trop comment elle marche

  4. #4
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 273
    Points : 258
    Points
    258
    Par défaut
    Merci merci merci merci merci merci merci merci!!!

    (je viens de passer 2h a m'arracher les cheveux sur les recordset, et dire qu'il suffisait de faire group by date...)

    En fait en mode design j'avais mis Operation et group by date mais il avait mis automatiquement un group by pour tous les autres champs... et ca ne marchait pas. Alors que la j'ai essaye en gardant que le group by par date et ca marchait

    Allez a la suite maintenant... (et sans doute a bientot sur le forum parce que la prochaine etape m'empeche deja de dormir)

    PS: Pour le Iif, c'est Iif (condition, resultat si condition verifiee, resultat si condition pas verifiee). Je ne vois pas trop comment l'utiliser dans ce cas puisque IsNull(sum(nz(quantite[i]))) ne sera jamais vrai (puisque s'il fait la somme des nz ce sera soit le chiffre soit 0)

  5. #5
    Membre actif
    Avatar de GAGNON
    Inscrit en
    Septembre 2003
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 201
    Points : 201
    Points
    201
    Par défaut

    pense à

    bonne continuation
    La pensée n'est qu'un éclair au milieu de la nuit. Mais c'est cet éclair qui est tout.
    Henri Poincaré

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Bonjour,

    PS: Pour le Iif, c'est Iif (condition, resultat si condition verifiee, resultat si condition pas verifiee). Je ne vois pas trop comment l'utiliser dans ce cas puisque IsNull(sum(nz(quantite[i]))) ne sera jamais vrai (puisque s'il fait la somme des nz ce sera soit le chiffre soit 0)
    Ecrire plutôt un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT nz(Sum([Quantity1]),"NULL") AS Qte1, ... FROM MaTable
    Philippe

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

Discussions similaires

  1. [MySQL] Filtre de données : tous sauf ceux qui sont blacklistés
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2008, 21h32
  2. Somme avec une requete sql
    Par virtuose dans le forum Langage SQL
    Réponses: 8
    Dernier message: 26/01/2006, 16h32
  3. [Excel]Faire une somme avec une macro
    Par Chlo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/01/2006, 19h53
  4. Pb récupération d'une somme avec SUM()
    Par momo99 dans le forum InterBase
    Réponses: 3
    Dernier message: 01/11/2005, 15h38
  5. Problème de somme avec Qreport
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/09/2005, 11h23

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