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 :

probleme somme cumulée


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 66
    Points
    66
    Par défaut probleme somme cumulée
    Bonjour
    Je veux faire une somme cumulée dans une requête
    Je veux faire la sommé du montant des factures ligne par ligne ….

    Exemple
    Numéro Facture Date Facture Montant Facture Montant Cumulée
    01 11/01/2007 1000 1000
    02 21/01/2007 2000 3000
    03 27/01/2007 2500 5500
    04 31/01/2007 3000 8500
    05 11/02/2007 3500 12000

    J’ai essayé cette requête mais il ya rien

    select a.Numero, a.Date, a.Montant,
    sum(a.Montant) OVER (PARTITION BY a.Numero, a.Date) as Somme
    from Facture a
    j’ai toujours la meme valeur du montant pour la somme

    et avec cette requête

    select a.Numero, a.Date, a.Montant,
    sum(a.Montant) OVER (PARTITION BY a.Numero, a.Date) as Somme,
    sum(a.Montant) OVER (PARTITION BY a.NumClient ORDER BY a.Numero) as Somme
    from Facture a
    j’ai ce message d’erreur “Syntaxe incorrecte vers 'order'. »

    merci d’avence
    a+

  2. #2
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Numero, [Date], Montant,
           (SELECT SUM(Montant)
            FROM   Facture
            WHERE  Numero <= F.Numero) AS Somme
    FROM   Facture AS F
    La requête se base sur le numéro de facture afin de déterminer les factures "précédentes".
    Tu peux bien entendu l'adapter si tu préfères te baser sur la date de facture. Dans ce cas, tu devras décider de la manière dont tu traites les factures ayant la même date.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 810
    Points
    30 810
    Par défaut
    ORDER BY demande de préciser les lignes à prendre en compte.

    Essaye avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SUM(montant) 
      OVER(PARTITION BY numclient 
        ORDER BY numero ROWS 
        BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par J1 Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Numero, [Date], Montant,
           (SELECT SUM(Montant)
            FROM   Facture
            WHERE  Numero <= F.Numero) AS Somme
    FROM   Facture AS F
    La requête se base sur le numéro de facture afin de déterminer les factures "précédentes".
    Tu peux bien entendu l'adapter si tu préfères te baser sur la date de facture. Dans ce cas, tu devras décider de la manière dont tu traites les factures ayant la même date.

    merci pour votre aide,
    réellement na pas marché, le problème que l'ordre des enregistrements dans la base c'est pas le même avec l'ordre de numero

  5. #5
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    ORDER BY demande de préciser les lignes à prendre en compte.

    Essaye avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SUM(montant) 
      OVER(PARTITION BY numclient 
        ORDER BY numero ROWS 
        BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        )
    merci pour votre aide
    il ya un problème il me donne ce message d'erreur "Syntaxe incorrecte vers 'ROWS'."

    peut être il n'est pas accepté pour le MS SQL

  6. #6
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par J1 Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Numero, [Date], Montant,
           (SELECT SUM(Montant)
            FROM   Facture
            WHERE  Numero <= F.Numero) AS Somme
    FROM   Facture AS F
    La requête se base sur le numéro de facture afin de déterminer les factures "précédentes".
    Tu peux bien entendu l'adapter si tu préfères te baser sur la date de facture. Dans ce cas, tu devras décider de la manière dont tu traites les factures ayant la même date.
    merci, j'ai trouve la solution, la voila

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT Numero, Date, Montant, 
    	(select sum(f2.montant)
    	 from Facture f2 
    	 where (f2.Num <= Facture.Num) and (f2.NumClient = @NumClient))  as "montant cumule"
    	FROM Facture
    	WHERE (NumClient = @NumClient)	
    	ORDER BY Num

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

Discussions similaires

  1. somme cumulative su BO reporter
    Par cricri2607 dans le forum Débuter
    Réponses: 4
    Dernier message: 26/11/2008, 11h40
  2. Somme cumulative sur 12 mois glissant
    Par Ptij16 dans le forum Deski
    Réponses: 6
    Dernier message: 13/07/2007, 10h24
  3. somme cumulative sql
    Par marcdonaldwilfried dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/04/2007, 12h25
  4. ! Somme Cumulative en SQL !
    Par dom283 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2007, 18h25
  5. somme cumulative
    Par gsquad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2006, 17h18

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