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

MS SQL Server Discussion :

Historique de ventes sur 3 ans par mois


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut Historique de ventes sur 3 ans par mois
    Bonjour,

    Je souhaite réaliser une requete qui va chercher dans une table les ventes d'un produit par mois sur 3 ans soit 36 mois!

    j'ai donc ma table
    Ventes(NuméroVente,QteVendue ... , #CodeArticle, ..., DateDeVente, ...)

    Nous sommes le 17/07/2006 je veux les quantités vendues du mois de juin 2006 (le dernier mois fini) à juillet 2003.

    On peux connaitre la date avec getDate() le mois avec month(getDate()) mais je ne sais pas comment prendre les 36 derniers mois finis.

    Merci de bien vouloir m'aider

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Je ne sais pas si j'ai bien compris. Est-ce que ceci te donne ce que tu cherches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT YEAR(DateDeVente) as Annee, MONTH(DateDeVente) as Mois, COUNT(*) as Quantite
    FROM dbo.Ventes
    WHERE DateDeVente >= DATEADD(month, -36, current_timestamp) AND
    CodeArticle = ?
    GROUP BY YEAR(DateDeVente), MONTH(DateDeVente)

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    presque pareil que notre ami, sauf que :

    1- Il faut d'abord que tu fasses une fonction ou un bout de code dans ta proc qui détermine la date du dernier mois cloturé.
    Supposons que la variable s'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECLARE @DateCloture DATETIME
    Bien sur il faut gérer les mois de février, et se poser la question si tu lances ta requête un dernier jours de mois (par ex le 31/07) tu veux les 3ans depuis 31/07 ou 30/06 ?

    2- Puis il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT CODEARTICLE, SUM(QTEVENDUE)
    FROM Ventes
    WHERE DATEDEVENTE <=@DateCloture
    AND DATEDEVENTE >=DATEDIFF(mm, -36, DateDeVente)
    GROUP BY CODEARTICLE

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    moi je veux ca :

    Article---07/03--08/03--09/03--...---05/06---06/06
    Art 1-----15-----20-----18-----...-----36-----25
    Art 2-----00-----00-----00-----...-----14-----23
    Art 3----100-----88-----96-----...----245----286

    L'historique moi à moi des ventes sur 3 ans pour chaque produits.
    Il faut faire un somme en fonction de la période
    Afficher chaque période
    Pour tous les article

    Merci

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    ben tu vas avoir du mal à avoir ce que tu veux, car il te faut faire un pseudo tableau dynamique croisé en SQL, et bonjour l'ambiance pour le faire.
    Je dis pas que c'est impossible, je dis juste que c'est complexe.

    En faisant une recherche sur ce forum, tu pourras peut être trouver ton bonheur. Je dis bien peut être

  6. #6
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    eh oui, à moins que tu sois sur SQL Server 2005.
    http://fadace.developpez.com/mssql/pivot/
    L'article contient aussi des solutions pour SQL 2000

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2007, 10h29
  2. cumul vente par mois et par année
    Par christopheS dans le forum Access
    Réponses: 4
    Dernier message: 03/10/2006, 15h01
  3. Problème de tri sur les dates par année puis mois
    Par rob2-9 dans le forum Access
    Réponses: 26
    Dernier message: 11/08/2006, 11h04
  4. Historique des ventes sur 3 années
    Par boux2 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/07/2006, 09h18
  5. question sur 6 jours ouvrés par mois de préavis du syntec
    Par Filippo dans le forum Droit du travail
    Réponses: 21
    Dernier message: 14/06/2006, 13h20

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