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

Développement SQL Server Discussion :

SQL Server 2012 - SUM


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut SQL Server 2012 - SUM
    Bonjour à tous,

    j'ai un petit soucis pour la création d'une requête.

    J'ai un table contenant les champs [TRANSACTION_DATE] et [TRANSACTION_AMMOUNT] et je voudrais sélectionner pour chaque mois la somme de [TRANSACTION_AMMOUNT]

    j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT EOMONTH([A].[TRANSACTION_DATE]) AS [Date],  
     (
        SELECT SUM([TRANSACTION_AMMOUNT]) 
        FROM [dbo].[T_TRANSACTION] [B] 
        WHERE [B].[TRANSACTION_DATE] <=  [A].[TRANSACTION_DATE]
      )  
    FROM [dbo].[T_TRANSACTION] [A] 
    ORDER BY [Date]
    Le problème est que je fais <= [A].[TRANSACTION_DATE] et non inférieur à [Date] et de ce fait je perd le disctinct sur chaque fin de mois...

    Une idée ?

    Merci

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Pourquoi pas tout simplement comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT EOMONTH(TRANSACTION_DATE) AS 'Date',  
    	SUM(TRANSACTION_AMMOUNT) AS Total_mensuel 
    FROM dbo.T_TRANSACTION
    GROUP BY EOMONTH(TRANSACTION_DATE)
    ORDER BY EOMONTH(TRANSACTION_DATE)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Avec cette méthode, la requête prend seulement en compte les transactions du mois en cours en non toutes les transactions antérieurs à la fin du mois.

    Pour avoir la somme sur un compte, il faut faire la somme de toutes les transactions jusqu'à la date souhaitée.

    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Ceci à l'air de fonctionner :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT EOMONTH([A].[TRANSACTION_DATE]) AS [Date],
     (
           SELECT SUM([TRANSACTION_AMMOUNT]) 
           FROM [dbo].[T_TRANSACTION] [B] 
           WHERE [B].[TRANSACTION_DATE] <=  EOMONTH([A].[TRANSACTION_DATE])
     )  
    FROM [dbo].[T_TRANSACTION] [A]
    ORDER BY [Date]


    Si vous avez mieux, n'hésitez pas.

    Merci

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    Avec cette méthode, la requête prend seulement en compte les transactions du mois en cours en non toutes les transactions antérieurs à la fin du mois.
    À bon ?
    Je ne connais pas la fonction EOMONTH qui n'est pas une fonction standard SQL mais j'ai supposé que ça extrayait le mois de la date.
    Ma requête est donc censée faire la somme des montants pour chaque mois.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    À bon ?
    Je ne connais pas la fonction EOMONTH qui n'est pas une fonction standard SQL mais j'ai supposé que ça extrayait le mois de la date.
    Ma requête est donc censée faire la somme des montants pour chaque mois.
    EOMONTH (End Of Month) retourne le dernier jour de la date passé en paramètre.

    Ce n'est pas la somme des montant de chaque mois que je veux mais la somme totale avant une date précise.

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce n'est pas la somme des montant de chaque mois que je veux mais la somme totale avant une date précise.
    Pourtant :
    je voudrais sélectionner pour chaque mois la somme de [TRANSACTION_AMMOUNT]
    Somme totale avant une certaine date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(TRANSACTION_AMOUNT) AS Total
    FROMdbo.T_TRANSACTION
    WHERE TRANSACTION_DATE < 'une_date'
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Microsoft dévoile les prix et licences pour SQL Server 2012 « Denali »
    Par Hinault Romaric dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/07/2012, 19h36
  2. SQL Server 2012 : exécuter Denali sans l’installer ?
    Par Hinault Romaric dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/01/2012, 12h03
  3. Rendez vous des Experts : SQL Server 2012 (Denali)
    Par Nicolas Esprit dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/11/2011, 09h14
  4. [Geek] Kinect et SQL Server 2012
    Par Ptit_Dje dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 21/10/2011, 20h00
  5. Pb fonction Si en SQl server et Sum
    Par henoch dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/01/2011, 10h49

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