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

Requêtes et SQL. Discussion :

operation sur les ligne et non pas sur les colonnes [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut operation sur les ligne et non pas sur les colonnes
    salut a tous , je suis face a un promble que je n arrive pas a le reglé depuis des jours , Exemple : MA_TABLE

    id_client année vente
    09001 2008 355
    09001 2009 435
    09001 2010 386
    09012 2009 676
    09012 2010 623

    je voudrai avoir comme resultat ("colonne temp" : N-1 : evolution des vente 2010 par rapport à 2009, N-2 : evolution de vente 2009 par rapport à 2008,
    colonne evol : vente de ((2010-2009) /2009) POUR N-1 ;vente de ((2009-2008) /2008) POUR N-2 ;

    id_client temp evol
    09001 N-2 0,22 -------->-- (435-355/355)
    09001 N-1 -0,11 -------->-- (386-435/435)
    09012 N-1 -0,78 -------->-- (623-676/676)


    MERCI D'AVANCE

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bonjour,

    Est-ce que cela vous dérange de passer par une requête VBA ?
    Le probléme c'est qu'on doit passer par une boucle.
    Pour ça , il faut maitriser DAO : ici

    L'algorithme serait de la forme suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Je compte le nombre de id-clients différents qu'on appellera N
    For i = 1 to N 
      Je calcule la différence entre l'année MAX et l'année MIN ( ex 2010-2008) -> Diff
      For j = 1 to Diff 
        Valeur = ( je selectionne les ventes de l'année MAX - j / MAX  - (j+1)
      Next j 
      Ensuite on implémente le tout dans une seule requête en faisant attention au nombre de variables ( il va falloir créer des variables fictives car chaque ligne doit contenir le nombre de variables ).  
    Next i

    Sinon je suis persuadé qu'il y a une méthode plus simple , je suis intéressé de le connaitre.

    Cdt

    RM
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par omarnigth Voir le message
    salut a tous , je suis face a un promble que je n arrive pas a le reglé depuis des jours , Exemple : MA_TABLE

    id_client année vente
    09001 2008 355
    09001 2009 435
    09001 2010 386
    09012 2009 676
    09012 2010 623

    je voudrai avoir comme resultat ("colonne temp" : N-1 : evolution des vente 2010 par rapport à 2009, N-2 : evolution de vente 2009 par rapport à 2008,
    colonne evol : vente de ((2010-2009) /2009) POUR N-1 ;vente de ((2009-2008) /2008) POUR N-2 ;

    id_client temp evol
    09001 N-2 0,22 -------->-- (435-355/355)
    09001 N-1 -0,11 -------->-- (386-435/435)
    09012 N-1 -0,78 -------->-- (623-676/676)


    MERCI D'AVANCE

    ce que j ia pu faire c ca

    id-client N-2 N-1
    09001 0.22 -0.11
    09012 0 -0.78

    maitnenant j aimerai rendre les colone en ligne , je n arrive toujur pas a obtenir ca
    09001 N-2 0,22
    09001 N-1 -0,11
    09012 N-1 -0,78

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut lelensois16 et bienvenu omarnigth,

    en réponse à ton MP:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
       t1.id_client,
       dmax("année","MA_TABLE","id_client="& t1.id_client) & "-" & dmax("année","MA_TABLE","id_client="& t1.id_client) - (t1.année - 1) as temp,
       format((t1.vente-t2.vente)/t2.vente,"0.00") AS evol
    FROM MA_TABLE AS t1 INNER JOIN MA_TABLE AS t2 ON (t1.année-1=t2.année) AND (t1.id_client = t2.id_client);
    par contre j'assure pas de formation SQL ;P
    bon courage,

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    merci beaucoup , ca ma vcraiment aider , juste il reste un petit suci , il y a des erreurs sur la colonne "temp"

    le resultat
    id_client temp evol

    09001 #Erreur 0.23
    09001 #Erreur -0.11
    09012 #Erreur -0.08

    merci

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    vu que le champ calculé est correct "année" et "id_client" sont correct. je ne vois que "MA_TABLE" qui pourrait provoquer cette erreur. assure toi que le nom de la table correspond. bien que je ne pense pas à un pb de type vérifie aussi de ce côté.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT
       t1.id_client, t1.année AS temp,
       format((t1.vente-t2.vente)/t2.vente,"0.00") AS evol
    FROM MA_TABLE AS t1 INNER JOIN MA_TABLE AS t2 ON (t1.année-1=t2.année) AND (t1.id_client = t2.id_client);

    j'ai enleve le dmaw et ca marché ,ca marche waw , merce bcp

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/10/2014, 11h19
  2. Background sur les caractères et non pas sur le conteneur
    Par kaching dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 03/06/2014, 09h28
  3. Réponses: 6
    Dernier message: 06/12/2007, 09h33
  4. Insertion sous la derniere ligne (et non pas sur)
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2007, 10h28
  5. execution sur l'emulateur mais non pas sur le Pocket PC
    Par inter_amine dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 08/06/2007, 09h35

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