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

Requêtes et SQL. Discussion :

Problème de cumul dans une requête SQL


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut Problème de cumul dans une requête SQL
    Salut,

    J'ai cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [Client Commande toutes les Societes/Par Societes].CODE_RP, [Client Commande toutes les Societes/Par Societes].ANNEE, [Client Commande toutes les Societes/Par Societes].MOIS, [Client Commande toutes les Societes/Par Societes].[CompteN°commande], [Client Commande toutes les Societes/Par Societes].[SommeSous-total_euro],[Client Commande toutes les Societes/Par Societes].[Societe] FROM [Client Commande toutes les Societes/Par Societes]
    Maintenant, je voudrais ajouter un cumul à la colonne "SommeSous-total_euro", mais je ne vois vraiment pas comment faire !

    Je suis encore avec Access 97.

    Comment peut-on y arriver ?

    Merci par avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    Pourquoi se passer du QBE (générateur de requête) ? Il est là pour ça !

    Dans le QBE passe en mode SQL et copie la requete passe en mode creation.
    clique sur le symbole E (grec) et sur la ligne Opération choisis Somme.

    Facile non ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Salut,

    Effetivement je veux bien passer par le QBE, mais le regroupement n'est pas la solution à mon problème :-(.

    En fait, avec cette requête, j'ai les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CODE_RP | ANNEE | MOIS | CompteN°Commande | SommeSous-total_euro | Societe
    YB          | 2007   |       1 |  XXXXXXXXXXXXX   |  3607  |  toto
    YB          | 2007   |       1 |  XXXXXXXXXXXXX   | 40740 | toto
    YB          | 2007   |       2 |  XXXXXXXXXXXXX   | 1490   | toto
    Et voilà ce que je souhaiterais avoir (rajout de la colonne cumul) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CODE_RP | ANNEE | MOIS | CompteN°Commande | SommeSous-total_euro | Cumul | Societe
    YB          | 2007   |       1 |  XXXXXXXXXXXXX   |  3607  |  3607 |toto
    YB          | 2007   |       1 |  XXXXXXXXXXXXX   | 40740 | 44344 | toto
    YB          | 2007   |       2 |  XXXXXXXXXXXXX   | 1490   | 45834 | toto
    ... ce que je ne parviens pas à faire.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Fais une recherche sur le forum Access avec le mot Cumul, tu trouveras des exemples.

    Starec

  5. #5
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    J'ai bien lu les sujets effectivement, mais j'arrive pas à l'approprié à ma requête :-(.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Les exemples dont parles Starec sont assez explicites et pas très compliqués.
    Essai de les adapter et montre ce que tu obtient.
    Amicalement

  7. #7
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Bon, alors, j'ai regardé un peu partout, et j'ai fini par faire quelque chose de semblable, en utilisant une sous-requête.

    Voici ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW td1.CODE_RP, td1.ANNEE, td1.MOIS, Count(td1.N_CDE) AS [CompteN°commande], Sum(td1.[TTL_CDE EURO]) AS [SommeSous-total_euro], "toto" AS Societe, (SELECT Sum([TTL_CDE EURO]) FROM [Client Commandes1] As td WHERE (td.[CODE_RP] = td1.[CODE_RP]) AND (td.[ANNEE] = td1.[ANNEE]) AND (td.[MOIS] = td1.[MOIS])) AS Cumul
    FROM [Client Commandes1] AS td1
    GROUP BY td1.CODE_RP, td1.ANNEE, td1.MOIS
    ORDER BY td1.CODE_RP, td1.ANNEE, td1.MOIS;
    Ce qui donne le même résultat pour la colonne SommeSous-total_euro & cumul.

    Je dois être dans le bon chemin. Néanmoins, maintenant, je veux que le cumul s'aditionne au précédent.

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (SELECT Sum(T1.[SommeSous-total_euro]) FROM [Client Commande toutes les Societes/Par Societes] AS T1 WHERE T1.ID<=T2.ID) AS CumulTotal, T2.* FROM [Client Commande toutes les Societes/Par Societes] AS T2;
    seulement il faut un critère d'ordre pour utiliser les sous requetes, j'ai introduit pour l'exemple un champ supplémentaire: [ID] (numérotation manuel des lignes) mais dans ton cas je ne sais pas car ANNEE+MOIS n'est pas suffisant pour établir un critère d'ordre sans doublon. peut-être avec 'CompteN°Commande'?

  9. #9
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ok, je comprends.

    Cependant, encore un soucis.

    J'ai ajouté un ID (appelé N°), et les champs qui permettent de répartir ce cumul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T2.CODE_RP, T2.ANNEE, T2.MOIS, (SELECT Sum(T1.[TTL_CDE EURO]) FROM [Client Commandes1] AS T1 WHERE T1.[]<=T2.[]) AS CumulTotal
    FROM [Client Commandes1] AS T2
    GROUP BY T2.CODE_RP, T2.ANNEE, T2.MOIS;
    En faisant comme ça, j'ai le message d'erreur suivant :

    Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'N°' comme une partie de la fonction de regroupement
    Pourquoi ?

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    tu as omis [N°] dans ton groupement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY T2.CODE_RP, T2.ANNEE, T2.MOIS, T2.[];

  11. #11
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Super ! Ca fonctionne

    Merci.

  12. #12
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Salut,

    Je remonte le sujet car j'ai un léger problème suite à ce cumul.

    En fait, je voudrais classer le résultat par le code_rp, l'année et le mois.

    Le cumul se fait à priori par l'ordre de saisie.

    Comment forcer l'ordre pour qu'il commence par mes critères ?

    J'ai bien essayé un order by mais rien n'y fait :-(.

    Merci par avance.

  13. #13
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    code_rp, l'année et le mois.
    existe t-il qu'UN SEUL enregistrement pour code_rp dans l'année et le mois respectif?

  14. #14
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    non, il peut y avoir plusieurs lignes.

  15. #15
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    dans la sous requete:
    il y aura donc plusieur enregistrements qui seront pris et donc le total faux: il faut vraiment un critère d'ordre dans les enregistrements sans doublons. comme une numérotation automatique, un numéro de facture (unique et incrémenté), une date complète...

    non, il peut y avoir plusieurs lignes.
    donc code_rp, l'année et le mois n'est donc pas suffisant pour identifier un enregistrement pour la sous requete, tu n'as pas autre chose?
    sinon je crains qu'il va falloir faire une fonction.

Discussions similaires

  1. problème de syntaxe dans une requête SQL
    Par nutopia dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/11/2010, 17h17
  2. Problème de variable dans une requête SQL
    Par Namzicos dans le forum SQL
    Réponses: 2
    Dernier message: 27/01/2010, 14h38
  3. Problème de variable dans une Requête SQl
    Par steph77 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/08/2009, 15h16
  4. Problème d'espaces dans une requête SQL
    Par Wonesek dans le forum SQL
    Réponses: 9
    Dernier message: 22/04/2008, 16h46
  5. Problème avec like dans une requête SQL
    Par Boublou dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2007, 15h46

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