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 :

obtenir la somme pour une année et pour l'annee-1 sur la même ligne


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de hugobob
    Profil pro
    FOI
    Inscrit en
    Septembre 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Gabon

    Informations professionnelles :
    Activité : FOI

    Informations forums :
    Inscription : Septembre 2005
    Messages : 169
    Points : 203
    Points
    203
    Par défaut obtenir la somme pour une année et pour l'annee-1 sur la même ligne
    Slt à tous !

    Voila je m'explique

    J'ai une table vente ( id_article,montant, mois , annee)

    j'aimerais avoir une requete qui donne le resultat suivant

    les colonnes S_ANNEE1 S_ANNEE2 où S_ANNEE1 represente la somme des montant à l'annee N et S_ANNEE2 celle de l'annee precedente ie N-1

    Merci d'avance

  2. #2
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Bonjour,
    je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select sum(tot1), sum(tot2), Id_Article
    from(
    select sum(montant) as tot1,0 as tot2, Id_Article
    from vente
    where annee = 2006 group by Id_Article
    union
    select 0 as tot1, sum(montant) as tot2, Id_Article 
    from vente 
    where annee = 2005 group by Id_Article)
    group by id_article
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT annee, sum(montant) as CA
    FROM vente 
    GROUP BY annee
    Cette requête te donnera les chiffres d'affaire par année. Tu peux afficher le résultat d'une année en ajoutant une clause WHERE comportant l'année et l'année qui la précède sans difficulté.

    Le fait de faire sortir à ta base de données ce résultat en colonnes n'est que de la cosmétique (c'est à la mode on me dira) et je t'invite à lire cet article concernant ce genre de choses : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9

  4. #4
    Membre actif Avatar de hugobob
    Profil pro
    FOI
    Inscrit en
    Septembre 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Gabon

    Informations professionnelles :
    Activité : FOI

    Informations forums :
    Inscription : Septembre 2005
    Messages : 169
    Points : 203
    Points
    203
    Par défaut
    Resalut !

    Apres avoir longtemps voici ce que j'ai trouvé

    Je cree d'abord une vue ou requete CA_PAR_AN:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT id_article,annee, sum(montant) as CA
    FROM vente 
    GROUP BY id_article,annee
    ensuite je fait une requete ou une autre vue CA_PAR_ANTERIORITE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT CA_PAR_AN1.id_article,CA_PAR_AN1.annee as AN_N, 
    CA_PAR_AN1.CA as CA_AN_N,CA_PAR_AN2.annee as AN_N-1,CA_PAR_AN2.CA as CA_AN_N-1
    FROM CA_PAR_AN 'CA_PAR_AN1' join CA_PAR_AN 'CA_PAR_AN2' on ((CA_PAR_AN1.id_article=CA_PAR_AN2.id_article) and (CA_PAR_AN1.AN_N =CA_PAR_AN2.AN_N_1+1))
    J'explique

    Je cree une vue qui m'affiche pour chaque article le montant vendue par annee et apres je cree une autre vue qui join 2 vues(celle cree precedement)
    par l'article et par les annees( l'annee de la premiere vue join l'annee precedente de la seconde d'ou le (+1) ds la jointure)

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok
    bonjour,

    j'aime bien ta solution car elle est claire et simple d'accès.

    par contre je me pose la question du cout (en performance)...

    je sais pas qu'est-ce qui est mieux entre la tienne et une requête comme celles présentées dans le tuto :
    http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/02/2015, 15h53
  2. [Toutes versions] Obtenir une liste des jours fériés pour une année donnée
    Par metallica2 dans le forum Contribuez
    Réponses: 1
    Dernier message: 20/02/2014, 12h29
  3. Générer l'affichage pour une année glissante
    Par arthuro45 dans le forum Développement
    Réponses: 5
    Dernier message: 05/10/2011, 20h03
  4. Comment obtenir la somme d'une colonne dans Listview
    Par Jonathan31 dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/01/2011, 11h46

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