Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transform dans une requete

15 réponses
Avatar
FidoDido
Bonjour tout le monde,

J'aimerais savoir comment faire pour avoir le total de mon année (exemple
des ventes en 2008 et 2009), sur une seule ligne par Client et Catégorie
Produits,

Mon code SQL actuel

TRANSFORM First(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
FROM Remise, Produits AS T1 INNER JOIN (Clients AS T2 INNER JOIN Remise AS
T3 ON T2.[Clients ID] = T3.Client) ON T1.[Produits ID] = T3.Produits
GROUP BY T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
PIVOT Year(T3.[Daté]);

si je mets somme dans mon code SQL
TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
FROM Remise, Produits AS T1 INNER JOIN (Clients AS T2 INNER JOIN Remise AS
T3 ON T2.[Clients ID] = T3.Client) ON T1.[Produits ID] = T3.Produits
GROUP BY T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
PIVOT Year(T3.[Daté]);

on dirais qu'il multiplie les données avec Sum, comment dois-je faire pour
avoir les bon montant ?

Diable que je passe tu temps a essayer de résoudre se problème

merci à l'avance

5 réponses

1 2
Avatar
FidoDido
Merci pour ton aide Michel,

j'ai essayer cela, ca me donne bien juste les année que je veux, mais la
J'aimerais que quand j'ouvre ma requete, il me demande les années que je
désire afficher, car la il faudrais que je fasse plusieurs requete pour
afficher, ex: 2008 versus 2009, ou 2007, versus 2008 etc...... je t'envois
mes deux SQL , soit celle versus année, et celle dont je disais que je
pouvais demande les date que je désirais. c'est la dernière choses que je
vais te demandé.

celle sans me demande les années
TRANSFORM Sum(Remise.Montant) AS Valeur
SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
WHERE (((Year([Remise].[Daté])) Between 2008 And 2009))
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits
PIVOT Year([Remise].[Daté]);

et celle ou je peu entre la période que je veux comme requête
TRANSFORM Sum(Remise.Montant) AS Vente
SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
WHERE (((Remise.Daté) Between [Date debut première Année] And [Date Fin
première Année] Or (Remise.Daté) Between [Date debut deuxième Année] And
[Date fin deuxième Année]))
GROUP BY Clients.Société, Remise.Catégorie, Year([Daté])
ORDER BY Format([Daté],"yyyy") DESC
PIVOT Format([Daté],"yyyy") In
("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");



et encore une fois merci pour ton aide :)
--
Access 2007 un bijoux, mais que compliqué !!!!


"Michel__D" a écrit :

Bonjour,

FidoDido a écrit :
> Merci Michel,
>
> ok je viens de voir l'erreur, c'étais ( FROM Remise, Produits AS T1 INNER
> JOIN ) Remise, hein,

Et oui.

> pour ce qui est du critere, non cela proviens pas d'un formulaire, pourtant
> ca marchais dans mon ancienne requete qui me donnais sur deux rangée et deux
> colonnes pour les année. mais la ca marche pas avec le code que tu m'a donné.
> mais aumoins j'ai le tout sur une ligne.

Mouais, donc cela doit venir d'une table dans ce cas comme tu utilise des
alias pour référencer tes tables, il faut obligatoirement les mentionner
pour tous les champs.

> petite question si je veux avoir sur trimestre je dois changer quoi ?

Regarde l'aide sur la fonction DatePart()



Avatar
Michel__D
Re,

FidoDido a écrit :
Merci pour ton aide Michel,

j'ai essayer cela, ca me donne bien juste les année que je veux, mais la
J'aimerais que quand j'ouvre ma requete, il me demande les années que je
désire afficher, car la il faudrais que je fasse plusieurs requete pour
afficher, ex: 2008 versus 2009, ou 2007, versus 2008 etc...... je t'envois
mes deux SQL , soit celle versus année, et celle dont je disais que je
pouvais demande les date que je désirais. c'est la dernière choses que je
vais te demandé.

celle sans me demande les années
TRANSFORM Sum(Remise.Montant) AS Valeur
SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
WHERE (((Year([Remise].[Daté])) Between 2008 And 2009))
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits
PIVOT Year([Remise].[Daté]);

et celle ou je peu entre la période que je veux comme requête
TRANSFORM Sum(Remise.Montant) AS Vente
SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
WHERE (((Remise.Daté) Between [Date debut première Année] And [Date Fin
première Année] Or (Remise.Daté) Between [Date debut deuxième Année] And
[Date fin deuxième Année]))
GROUP BY Clients.Société, Remise.Catégorie, Year([Daté])
ORDER BY Format([Daté],"yyyy") DESC
PIVOT Format([Daté],"yyyy") In
("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");



et encore une fois merci pour ton aide :)



Essaye avec ce qui suit :

PARAMETERS [Année de début ?] Long, [Année de fin ?] Long;
TRANSFORM Sum(Remise.Montant) AS Vente
SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
WHERE (Year(Remise.Daté) Between [Année de début ?] And [Année de fin ?])
GROUP BY Clients.Société, Remise.Catégorie, Year(Remise.[Daté])
ORDER BY Format(Remise.[Daté],"yyyy") DESC
PIVOT Format(Remise.[Daté],"yyyy") In
("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");
Avatar
FidoDido
Salut Michel,

j'ai essayé ca marche mais ca me mets toutes les année et ce sur des lignes
différente, je crois que je n'aurais pas le choix de faire des requete pour
chaque année que je voudrai comparé.

mais beaucoup de ton aide, et j'aimerais remercier les autres aussi, par
contre si quelqu'un trouve une solution, merci de m'en faire part. je crois
que je vais m'acheter un livre sur VBA, car ceci aurais pu m,aider je crois.
--
Access 2007 un bijoux, mais que compliqué !!!!


"Michel__D" a écrit :

Re,

FidoDido a écrit :
> Merci pour ton aide Michel,
>
> j'ai essayer cela, ca me donne bien juste les année que je veux, mais la
> J'aimerais que quand j'ouvre ma requete, il me demande les années que je
> désire afficher, car la il faudrais que je fasse plusieurs requete pour
> afficher, ex: 2008 versus 2009, ou 2007, versus 2008 etc...... je t'envois
> mes deux SQL , soit celle versus année, et celle dont je disais que je
> pouvais demande les date que je désirais. c'est la dernière choses que je
> vais te demandé.
>
> celle sans me demande les années
> TRANSFORM Sum(Remise.Montant) AS Valeur
> SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
> Produits.Produits
> FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
> = Remise.Client) ON Produits.[Produits ID] = Remise.Produits
> WHERE (((Year([Remise].[Daté])) Between 2008 And 2009))
> GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
> Produits], Produits.Produits
> PIVOT Year([Remise].[Daté]);
>
> et celle ou je peu entre la période que je veux comme requête
> TRANSFORM Sum(Remise.Montant) AS Vente
> SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
> FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
> WHERE (((Remise.Daté) Between [Date debut première Année] And [Date Fin
> première Année] Or (Remise.Daté) Between [Date debut deuxième Année] And
> [Date fin deuxième Année]))
> GROUP BY Clients.Société, Remise.Catégorie, Year([Daté])
> ORDER BY Format([Daté],"yyyy") DESC
> PIVOT Format([Daté],"yyyy") In
> ("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");
>
>
>
> et encore une fois merci pour ton aide :)

Essaye avec ce qui suit :

PARAMETERS [Année de début ?] Long, [Année de fin ?] Long;
TRANSFORM Sum(Remise.Montant) AS Vente
SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
WHERE (Year(Remise.Daté) Between [Année de début ?] And [Année de fin ?])
GROUP BY Clients.Société, Remise.Catégorie, Year(Remise.[Daté])
ORDER BY Format(Remise.[Daté],"yyyy") DESC
PIVOT Format(Remise.[Daté],"yyyy") In
("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");



Avatar
FidoDido
Michel,

quand je fait un état ca marche pas du tout, il me redemande tout le temps
sans arret date debut et date fin en continu....... et si je clic sur annuler
il m'apparait une erreur et ferme access hihihihiih
--
Access 2007 un bijoux, mais que compliqué !!!!


"FidoDido" a écrit :

Salut Michel,

j'ai essayé ca marche mais ca me mets toutes les année et ce sur des lignes
différente, je crois que je n'aurais pas le choix de faire des requete pour
chaque année que je voudrai comparé.

mais beaucoup de ton aide, et j'aimerais remercier les autres aussi, par
contre si quelqu'un trouve une solution, merci de m'en faire part. je crois
que je vais m'acheter un livre sur VBA, car ceci aurais pu m,aider je crois.
--
Access 2007 un bijoux, mais que compliqué !!!!


"Michel__D" a écrit :

> Re,
>
> FidoDido a écrit :
> > Merci pour ton aide Michel,
> >
> > j'ai essayer cela, ca me donne bien juste les année que je veux, mais la
> > J'aimerais que quand j'ouvre ma requete, il me demande les années que je
> > désire afficher, car la il faudrais que je fasse plusieurs requete pour
> > afficher, ex: 2008 versus 2009, ou 2007, versus 2008 etc...... je t'envois
> > mes deux SQL , soit celle versus année, et celle dont je disais que je
> > pouvais demande les date que je désirais. c'est la dernière choses que je
> > vais te demandé.
> >
> > celle sans me demande les années
> > TRANSFORM Sum(Remise.Montant) AS Valeur
> > SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
> > Produits.Produits
> > FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
> > = Remise.Client) ON Produits.[Produits ID] = Remise.Produits
> > WHERE (((Year([Remise].[Daté])) Between 2008 And 2009))
> > GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
> > Produits], Produits.Produits
> > PIVOT Year([Remise].[Daté]);
> >
> > et celle ou je peu entre la période que je veux comme requête
> > TRANSFORM Sum(Remise.Montant) AS Vente
> > SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
> > FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
> > WHERE (((Remise.Daté) Between [Date debut première Année] And [Date Fin
> > première Année] Or (Remise.Daté) Between [Date debut deuxième Année] And
> > [Date fin deuxième Année]))
> > GROUP BY Clients.Société, Remise.Catégorie, Year([Daté])
> > ORDER BY Format([Daté],"yyyy") DESC
> > PIVOT Format([Daté],"yyyy") In
> > ("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");
> >
> >
> >
> > et encore une fois merci pour ton aide :)
>
> Essaye avec ce qui suit :
>
> PARAMETERS [Année de début ?] Long, [Année de fin ?] Long;
> TRANSFORM Sum(Remise.Montant) AS Vente
> SELECT Clients.Société, Remise.Catégorie, Sum([Vente]) AS AAD
> FROM Clients INNER JOIN Remise ON Clients.[Clients ID] = Remise.Client
> WHERE (Year(Remise.Daté) Between [Année de début ?] And [Année de fin ?])
> GROUP BY Clients.Société, Remise.Catégorie, Year(Remise.[Daté])
> ORDER BY Format(Remise.[Daté],"yyyy") DESC
> PIVOT Format(Remise.[Daté],"yyyy") In
> ("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017");
>


Avatar
Michel__D
Bonjour,

FidoDido a écrit :
Michel,

quand je fait un état ca marche pas du tout, il me redemande tout le temps
sans arret date debut et date fin en continu....... et si je clic sur annuler
il m'apparait une erreur et ferme access hihihihiih



Copie/colle le SQL de la requête que tu utilise.
1 2