1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 56
    Points : 24
    Points
    24

    Par défaut Fonction Cumul dans une requête

    Bonjour

    je cherche à cumuler dans ma requête le nombre d'unités vendues. Ma requête et son résultat. malgré des recherches je n'y parvient pas. quelqu'un peut-il voler à mon secours? Merci d'avance
    Nom : Capture d'écran 2017-07-30 16.58.40.png
Affichages : 74
Taille : 209,3 Ko
    Nom : Capture d'écran 2017-07-30 16.58.48.png
Affichages : 68
Taille : 236,3 Ko

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    août 2010
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 202
    Points : 304
    Points
    304

    Par défaut

    Bonjour,

    Sauf erreur, ci-joint une première possibilité qui va ralentir la requête et ne sera donc utilisable que pour une table vente < ~1000 lignes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT v.[Date vente],
           Sum([Détails ventes].[Unités vendue]) AS [SommeDeUnités vendue],
      (SELECT SUM([Unités vendue]) AS C
       FROM [Détails ventes]
       WHERE [N° vente] IN
           (SELECT [N° vente]
            FROM Ventes
            WHERE [Date Vente] <= V.[Date vente])) AS Cumul
    FROM Ventes AS v
    INNER JOIN [Détails ventes] ON v.[N° Vente] = [Détails ventes].[N° Vente]
    GROUP BY v.[Date vente]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    août 2010
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 202
    Points : 304
    Points
    304

    Par défaut

    deuxième possibilité qui a l'avantage d'être plus rapide que la première mais la sous-requete enregistrée n'est pas visible dans l'interface Query by Example mais seulement en mode SQL (car liaison entre tables est >= et non =) :

    1ère requête à nommer "rCumulVentes"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT v.[Date vente] AS LaDate,
           SUM(r.[CumulDate]) AS Cumul
    FROM
      (SELECT [Date vente]
       FROM Ventes
       GROUP BY [date vente]) AS V
    INNER JOIN
      (SELECT [Date Vente],
              Sum([Unités vendue]) AS CumulDate
       FROM ventes AS v
       INNER JOIN [Détails ventes] AS DV ON v.[N° vente] = dv.[N° vente]
       GROUP BY [Date vente]) AS R ON v.[Date vente] >= r.[Date vente]
    GROUP BY v.[date vente]
    Et la requête finale qui s'appuie sur la 1ère (celle-ci est visible dans le QBE) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT Ventes.[Date vente],
           Sum([Détails ventes].[Unités vendue]) AS [Somme Unités vendue],
           rCumulVentes.Cumul
    FROM (Ventes
          INNER JOIN rCumulVentes ON Ventes.[Date vente] = rCumulVentes.LaDate)
    INNER JOIN [Détails ventes] ON Ventes.[N° Vente] = [Détails ventes].[N° Vente]
    GROUP BY Ventes.[Date vente],
             rCumulVentes.Cumul

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 56
    Points : 24
    Points
    24

    Par défaut

    bonsoir

    merci de venir à l'aide, mais après avoir copier le code sql...je bute sur "sélectionner la source de données". J'ai encore besoin d'un peu d'aide!! Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    août 2010
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 202
    Points : 304
    Points
    304

    Par défaut

    Bonjour,

    1) J'ai oublié un s à unités vendue dans les requêtes, merci de vérifier tous les noms de table et les noms des champs (espace, accent,...)
    2) Il ne faut pas créer les requetes par le type "sql direct", mais choisir le type "selection" puis affichage->sql et entrer le code sql

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 56
    Points : 24
    Points
    24

    Par défaut Requete cumul

    Bonjour

    Merci pour votre aide et j'ai pu arriver à faire fonctionner ma "Req cumul". Celle-ci lance s'appuie sur la "Req caisse financière entre date pour cumul" et le résultat est conforme si l'entre date est figé dans la requête. Si je remplace mes dates fixes par Entre[Date début] Et [Date fin] j'ai sur le cumul...Erreur! Merci encore de votre aide.

    Nom : Capture d'écran 2017-09-15 23.34.58.png
Affichages : 23
Taille : 224,3 Ko

Discussions similaires

  1. utilisation de la fonction Partdate() dans une requête
    Par jm6570 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/02/2010, 11h55
  2. [Débutant] Cumul dans une requête
    Par waiwai dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/06/2007, 10h19
  3. [Requête] Utilisation d'une fonction perso dans une requête
    Par Julien Dufour dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/03/2007, 09h53
  4. [ACCESS2002][fonction sum dans une requête]
    Par louroulou dans le forum Access
    Réponses: 1
    Dernier message: 14/06/2006, 09h26

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