Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 22h28   #1
Invité de passage
 
Inscription : novembre 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 11
Points : 1
Points : 1
Envoyer un message via MSN à omarnigth
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
omarnigth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 07h17   #2
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
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 :
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
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 10h32   #3
Invité de passage
 
Inscription : novembre 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 11
Points : 1
Points : 1
Envoyer un message via MSN à omarnigth
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
omarnigth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 02h19   #4
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
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 644
Points : 3 895
Points : 3 895
salut lelensois16 et bienvenu omarnigth,

en réponse à ton MP:
Code SQL :
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,
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/11/2011, 19h43   #5
Invité de passage
 
Inscription : novembre 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 11
Points : 1
Points : 1
Envoyer un message via MSN à omarnigth
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
omarnigth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 20h02   #6
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
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 644
Points : 3 895
Points : 3 895
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é.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2011, 21h25   #7
Invité de passage
 
Inscription : novembre 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 11
Points : 1
Points : 1
Envoyer un message via MSN à omarnigth
Code :
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
omarnigth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h08.


 
 
 
 
Partenaires

Hébergement Web