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

10 réponses

1 2
Avatar
Castours
Bonjour
En faisant une requete d'analyse croisée.
"FidoDido" a écrit dans le message de
news:
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



Avatar
FidoDido
Salut Castours,

merci pour la réponse, j'ai déjà fait une requete croisé et ca marche, sauf
que j'ai pas le résultat sur une seul ligne par clients. ca donne ceci :

clients produits 2008 2009
1 assurance $1000
1 assurance $2000
1 gar remp $500
1 gar remp $1000

alors que je voudrais avoir la somme de années comme ceci

clients produits 2008 2009
1 assurance $1000 $2000
1 gar remp $500 $1000

ce qui me permettrais de faire la différence entre 2008 et 2009

aurais-tu une meilleur idée?

mais avec la fonction Transform SUM ........ on dirais qu'il multiplie
certains chiffres et je ne suis même pas capable de voir avec quel
chiffre.....
avec Transform Last...... il va m'inscrire la derniere donne entré dans
remise.....

Access 2007 un bijoux, mais que compliqué !!!!


"Castours" a écrit :

Bonjour
En faisant une requete d'analyse croisée.
"FidoDido" a écrit dans le message de
news:
> 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
>





Avatar
Michel__D
Bonjour,

FidoDido a écrit :
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



Et comme ceci cela donne quoi ?

TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
FROM 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é]);
Avatar
Michel__D
Michel__D a écrit :
Bonjour,

FidoDido a écrit :
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



Et comme ceci cela donne quoi ?

TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
FROM 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é]);



Et même plutot comme ceci, cela donne quoi ?

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

ca marche maintenant, mais j'aimerais savoir ou était mon erreur ?

super merci!! :)
--
Access 2007 un bijoux, mais que compliqué !!!!


"Michel__D" a écrit :

Michel__D a écrit :
> Bonjour,
>
> FidoDido a écrit :
>> 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
>
> Et comme ceci cela donne quoi ?
>
> TRANSFORM Sum(T3.Montant) AS Valeur
> SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
> FROM 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é]);

Et même plutot comme ceci, cela donne quoi ?

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



Avatar
FidoDido
resalut Michel_D,

j'ai essayer d'entre un nouveau critère, mais marche pas, voici monde SQL:

TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits]
FROM 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
WHERE (((Year(T3.[Daté])) Between [Date debut première Année] And [Date Fin
première Année] Or (Year(T3.[Daté])) Between [Date debut deuxième Année] And
[Date fin deuxième Année]))
GROUP BY T2.Société, T2.[Region ID], T1.[Catégorie Produits]
PIVOT Year(T3.[Daté]);

la choses que j'ai ajouter c'est le "Where" un choix de date.

aurais-tu une idée ?

merci


--
Access 2007 un bijoux, mais que compliqué !!!!


"FidoDido" a écrit :

Salut Michel_D

ca marche maintenant, mais j'aimerais savoir ou était mon erreur ?

super merci!! :)
--
Access 2007 un bijoux, mais que compliqué !!!!


"Michel__D" a écrit :

> Michel__D a écrit :
> > Bonjour,
> >
> > FidoDido a écrit :
> >> 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
> >
> > Et comme ceci cela donne quoi ?
> >
> > TRANSFORM Sum(T3.Montant) AS Valeur
> > SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
> > FROM 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é]);
>
> Et même plutot comme ceci, cela donne quoi ?
>
> TRANSFORM Sum(T3.Montant) AS Valeur
> SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
> FROM Clients AS T2 INNER JOIN (Produits AS T1 INNER JOIN Remise AS T3
> ON T1.[Produits ID] = T3.Produits) ON T2.[Clients ID] = T3.Client
> GROUP BY T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
> PIVOT Year(T3.[Daté]);
>


Avatar
Michel__D
Bonjour,

FidoDido a écrit :
Salut Michel_D

ca marche maintenant, mais j'aimerais savoir ou était mon erreur ?

super merci!! :)



pas bon

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é]);

bon

TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
FROM 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é]);

C'est assez clair il me semble.
Avatar
Michel__D
Bonjour,

FidoDido a écrit :
resalut Michel_D,

j'ai essayer d'entre un nouveau critère, mais marche pas, voici monde SQL:

TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits]
FROM 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
WHERE (((Year(T3.[Daté])) Between [Date debut première Année] And [Date Fin
première Année] Or (Year(T3.[Daté])) Between [Date debut deuxième Année] And
[Date fin deuxième Année]))
GROUP BY T2.Société, T2.[Region ID], T1.[Catégorie Produits]
PIVOT Year(T3.[Daté]);

la choses que j'ai ajouter c'est le "Where" un choix de date.

aurais-tu une idée ?

merci



Comme je présume que [Date debut première Année], etc sont des contrôles de
formulaires, tu peux employer la formulation suivante :

Forms![Le Nom Du Formulaire]![Le Nom Du Controle]
Avatar
FidoDido
Merci Michel,

ok je viens de voir l'erreur, c'étais ( FROM Remise, Produits AS T1 INNER
JOIN ) Remise, hein,

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.

petite question si je veux avoir sur trimestre je dois changer quoi ?
--
Access 2007 un bijoux, mais que compliqué !!!!


"Michel__D" a écrit :

Bonjour,

FidoDido a écrit :
> Salut Michel_D
>
> ca marche maintenant, mais j'aimerais savoir ou était mon erreur ?
>
> super merci!! :)

pas bon

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é]);

bon

TRANSFORM Sum(T3.Montant) AS Valeur
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits
FROM 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é]);

C'est assez clair il me semble.



Avatar
Michel__D
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()
1 2