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

Comparaison des ventes

17 réponses
Avatar
dly268
Bonjour =E0 tous,

J'ai un =E9tat bas=E9 sur une requ=EAte analyse crois=E9e qui affiche mes
ventes par mois et par produit avec un total annuel.
Jusque l=E0 tout roule !
J'aimerais ajouter une colonne avec le total annuel des ventes par
produit de l'ann=E9e pr=E9c=E9dente (=E0 titre de comparatif). C'est l=E0 q=
ue je
s=E8che pitoyablement. Je n'y arrive pas m=EAme en passant par des
requ=EAtes Union.

Quelqu'un aurait - il une piste =E0 me soumettre ?

Merci par avance

10 réponses

1 2
Avatar
Michel__D
Bonjour,

Il faut trouver les liaisons qui vont te permettre de faire
correspondre tes enregistrements et donc ici cela devrait donner ceci :

SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.


a écrit :
Bonjour à tous,

J'ai un état basé sur une requête analyse croisée qui affiche mes
ventes par mois et par produit avec un total annuel.
Jusque là tout roule !
J'aimerais ajouter une colonne avec le total annuel des ventes par
produit de l'année précédente (à titre de comparatif). C'est là que je
sèche pitoyablement. Je n'y arrive pas même en passant par des
requêtes Union.

Quelqu'un aurait - il une piste à me soumettre ?

Merci par avance


Avatar
dly268
Merci Michel__D pour cette lumière que je vois du fin fonds de mon
tunnel.

Si je comprends bien, dans ton exemple, il me faudrait un table par
année ?


On 26 mai, 19:40, Michel__D
wrote:
Bonjour,

Il faut trouver les liaisons qui vont te permettre de faire
  correspondre tes enregistrements et donc ici cela devrait donner ceci :

SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnn ée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[Valeu rAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

a écrit :

> Bonjour à tous,

> J'ai un état basé sur une requête analyse croisée qui affiche m es
> ventes par mois et par produit avec un total annuel.
> Jusque là tout roule !
> J'aimerais ajouter une colonne avec le total annuel des ventes par
> produit de l'année précédente (à titre de comparatif). C'est l à que je
> sèche pitoyablement. Je n'y arrive pas même en passant par des
> requêtes Union.

> Quelqu'un aurait - il une piste à me soumettre ?

> Merci par avance


Avatar
Michel__D
Bonjour,

Pourquoi diable une table, tu veux faire un calcul, une requête est faite pour cela

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS .[TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];

Enfin un truc de ce style.


a écrit dans le message de news:
Merci Michel__D pour cette lumière que je vois du fin fonds de mon
tunnel.

Si je comprends bien, dans ton exemple, il me faudrait un table par
année ?


On 26 mai, 19:40, Michel__D
wrote:
Bonjour,

Il faut trouver les liaisons qui vont te permettre de faire
correspondre tes enregistrements et donc ici cela devrait donner ceci :

SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

a écrit :

> Bonjour à tous,

> J'ai un état basé sur une requête analyse croisée qui affiche mes
> ventes par mois et par produit avec un total annuel.
> Jusque là tout roule !
> J'aimerais ajouter une colonne avec le total annuel des ventes par
> produit de l'année précédente (à titre de comparatif). C'est là que je
> sèche pitoyablement. Je n'y arrive pas même en passant par des
> requêtes Union.

> Quelqu'un aurait - il une piste à me soumettre ?

> Merci par avance


Avatar
Michel__D
Comme il y avait des erreurs dans les propositions, voici les corrections :

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];


SELECT T1.*, T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.


Michel__D a écrit :
Bonjour,

Pourquoi diable une table, tu veux faire un calcul, une requête est
faite pour cela

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS .[TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];

Enfin un truc de ce style.


a écrit dans le message de news:

Merci Michel__D pour cette lumière que je vois du fin fonds de mon
tunnel.

Si je comprends bien, dans ton exemple, il me faudrait un table par
année ?


On 26 mai, 19:40, Michel__D
wrote:
Bonjour,

Il faut trouver les liaisons qui vont te permettre de faire
correspondre tes enregistrements et donc ici cela devrait donner ceci :

SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée]
AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 =
T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

a écrit :

> Bonjour à tous,

> J'ai un état basé sur une requête analyse croisée qui affiche mes
> ventes par mois et par produit avec un total annuel.
> Jusque là tout roule !
> J'aimerais ajouter une colonne avec le total annuel des ventes par
> produit de l'année précédente (à titre de comparatif). C'est là que je
> sèche pitoyablement. Je n'y arrive pas même en passant par des
> requêtes Union.

> Quelqu'un aurait - il une piste à me soumettre ?

> Merci par avance





Avatar
dly268
Merci Michel pour ces précisions,

mais comme je ne suis pas un pro de SQL je me permet de te demander :
que représente T1 et T2 dans ton exemple ?



On 27 mai, 19:43, Michel__D
wrote:
Comme il y avait des erreurs dans les propositions, voici les corrections :

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePrécé dente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];

SELECT T1.*, T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnn ée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[Valeu rAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

Michel__D a écrit :

> Bonjour,

> Pourquoi diable une table, tu veux faire un calcul, une requête est
> faite pour cela

> [RequêteTotalParAnnée]
> SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS .[TotalAnnéePréc édente]
> FROM LaTable
> GROUP BY IDProduit, [ValeurAnnée];

> Enfin un truc de ce style.

> a écrit dans le message de news:
>
> Merci Michel__D pour cette lumière que je vois du fin fonds de mon
> tunnel.

> Si je comprends bien, dans ton exemple,  il me faudrait un table par
> année ?

> On 26 mai, 19:40, Michel__D
> wrote:
>> Bonjour,

>> Il faut trouver les liaisons qui vont te permettre de faire
>> correspondre tes enregistrements et donc ici cela devrait donner ceci :

>> SELECT T1.* T2.[TotalAnnéePrécédente]
>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAn née]
>> AS T2
>> ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 =
>> T2.[ValeurAnnée]
>> WHERE T1.[ValeurAnnée] = Year(Date());

>> PS:A adapter bien sur.

>> a écrit :

>> > Bonjour à tous,

>> > J'ai un état basé sur une requête analyse croisée qui affich e mes
>> > ventes par mois et par produit avec un total annuel.
>> > Jusque là tout roule !
>> > J'aimerais ajouter une colonne avec le total annuel des ventes par
>> > produit de l'année précédente (à titre de comparatif). C'est là que je
>> > sèche pitoyablement. Je n'y arrive pas même en passant par des
>> > requêtes Union.

>> > Quelqu'un aurait - il une piste à me soumettre ?

>> > Merci par avance


Avatar
dly268
Bonjour Michel

pour la première requête, ok je l'avais faite.
pour la deuxième que representent T1.* et T2.[TotalAnnéePrécédente] ?

merci par avance

On 27 mai, 19:43, Michel__D
wrote:
Comme il y avait des erreurs dans les propositions, voici les corrections :

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePrécé dente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];

SELECT T1.*, T2.
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnn ée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[Valeu rAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

Michel__D a écrit :

> Bonjour,

> Pourquoi diable une table, tu veux faire un calcul, une requête est
> faite pour cela

> [RequêteTotalParAnnée]
> SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS .[TotalAnnéePréc édente]
> FROM LaTable
> GROUP BY IDProduit, [ValeurAnnée];

> Enfin un truc de ce style.

> a écrit dans le message de news:
>
> Merci Michel__D pour cette lumière que je vois du fin fonds de mon
> tunnel.

> Si je comprends bien, dans ton exemple,  il me faudrait un table par
> année ?

> On 26 mai, 19:40, Michel__D
> wrote:
>> Bonjour,

>> Il faut trouver les liaisons qui vont te permettre de faire
>> correspondre tes enregistrements et donc ici cela devrait donner ceci :

>> SELECT T1.* T2.[TotalAnnéePrécédente]
>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAn née]
>> AS T2
>> ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 =
>> T2.[ValeurAnnée]
>> WHERE T1.[ValeurAnnée] = Year(Date());

>> PS:A adapter bien sur.

>> a écrit :

>> > Bonjour à tous,

>> > J'ai un état basé sur une requête analyse croisée qui affich e mes
>> > ventes par mois et par produit avec un total annuel.
>> > Jusque là tout roule !
>> > J'aimerais ajouter une colonne avec le total annuel des ventes par
>> > produit de l'année précédente (à titre de comparatif). C'est là que je
>> > sèche pitoyablement. Je n'y arrive pas même en passant par des
>> > requêtes Union.

>> > Quelqu'un aurait - il une piste à me soumettre ?

>> > Merci par avance


Avatar
Michel__D
Bonjour,

T1, T2 représentent des Alias des tables qu'ils représentent.

Par exemple, on peut écrire :
1)
SELECT LeChamp
FROM LaTable;
ou
2)
SELECT LaTable.LeChamp
FROM LaTable;
ou
3)
SELECT T.LeChamp
FROM LaTable AS T;

Sachant que l'écriture 1) n'est pas toujours possible et donc pour
améliorer la visibilité de la requête il est bien souvent intéressant
d'utiliser l'écriture 3)

Dans mon exemple T1.* représente donc tous les champs (*) de la table
[RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le champ
[TotalAnnéePrécédente] de la table [RequêteTotalParAnnée]

PS:Par contre dés l'instant ou un alias a été spécifié, il faut
obligatoirement le mentionner afin d'identifier la provenance des champs.


a écrit :
Bonjour Michel

pour la première requête, ok je l'avais faite.
pour la deuxième que representent T1.* et T2.[TotalAnnéePrécédente] ?

merci par avance

On 27 mai, 19:43, Michel__D
wrote:
Comme il y avait des erreurs dans les propositions, voici les corrections :

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];

SELECT T1.*, T2.
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée] AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 = T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

Michel__D a écrit :

Bonjour,
Pourquoi diable une table, tu veux faire un calcul, une requête est
faite pour cela
[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS .[TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];
Enfin un truc de ce style.
a écrit dans le message de news:

Merci Michel__D pour cette lumière que je vois du fin fonds de mon
tunnel.
Si je comprends bien, dans ton exemple, il me faudrait un table par
année ?
On 26 mai, 19:40, Michel__D
wrote:
Bonjour,
Il faut trouver les liaisons qui vont te permettre de faire
correspondre tes enregistrements et donc ici cela devrait donner ceci :
SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée]
AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 >>>> T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());
PS:A adapter bien sur.
a écrit :
Bonjour à tous,
J'ai un état basé sur une requête analyse croisée qui affiche mes
ventes par mois et par produit avec un total annuel.
Jusque là tout roule !
J'aimerais ajouter une colonne avec le total annuel des ventes par
produit de l'année précédente (à titre de comparatif). C'est là que je
sèche pitoyablement. Je n'y arrive pas même en passant par des
requêtes Union.
Quelqu'un aurait - il une piste à me soumettre ?
Merci par avance











Avatar
Michel__D
Il faut lire

[..]

Dans mon exemple T1.* représente donc tous les champs (*) de la requête
[RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le champ
[TotalAnnéePrécédente] de la requête [RequêteTotalParAnnée]

[..]

Michel__D a écrit :
Bonjour,

T1, T2 représentent des Alias des tables qu'ils représentent.

Par exemple, on peut écrire :
1)
SELECT LeChamp
FROM LaTable;
ou
2)
SELECT LaTable.LeChamp
FROM LaTable;
ou
3)
SELECT T.LeChamp
FROM LaTable AS T;

Sachant que l'écriture 1) n'est pas toujours possible et donc pour
améliorer la visibilité de la requête il est bien souvent intéressant
d'utiliser l'écriture 3)

Dans mon exemple T1.* représente donc tous les champs (*) de la table
[RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le champ
[TotalAnnéePrécédente] de la table [RequêteTotalParAnnée]

PS:Par contre dés l'instant ou un alias a été spécifié, il faut
obligatoirement le mentionner afin d'identifier la provenance des champs.


a écrit :
Bonjour Michel

pour la première requête, ok je l'avais faite.
pour la deuxième que representent T1.* et T2.[TotalAnnéePrécédente] ?

merci par avance

On 27 mai, 19:43, Michel__D
wrote:
Comme il y avait des erreurs dans les propositions, voici les
corrections :

[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];

SELECT T1.*, T2.
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée]
AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 =
T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());

PS:A adapter bien sur.

Michel__D a écrit :

Bonjour,
Pourquoi diable une table, tu veux faire un calcul, une requête est
faite pour cela
[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS
.[TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];
Enfin un truc de ce style.
a écrit dans le message de news:

Merci Michel__D pour cette lumière que je vois du fin fonds de mon
tunnel.
Si je comprends bien, dans ton exemple, il me faudrait un table par
année ?
On 26 mai, 19:40, Michel__D
wrote:
Bonjour,
Il faut trouver les liaisons qui vont te permettre de faire
correspondre tes enregistrements et donc ici cela devrait donner
ceci :
SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée]
AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 >>>>> T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());
PS:A adapter bien sur.
a écrit :
Bonjour à tous,
J'ai un état basé sur une requête analyse croisée qui affiche mes
ventes par mois et par produit avec un total annuel.
Jusque là tout roule !
J'aimerais ajouter une colonne avec le total annuel des ventes par
produit de l'année précédente (à titre de comparatif). C'est là
que je
sèche pitoyablement. Je n'y arrive pas même en passant par des
requêtes Union.
Quelqu'un aurait - il une piste à me soumettre ?
Merci par avance













Avatar
dly268
Merci pour ce cours magistral ;)
cependant le résultat avec inner join ne donne que les produits ayant
été vendus sur N et N-1, en essayant avec left join j'ai tous les
produits vendus sur N et les produits N-1 ayant aussi été vendus sur
la période N. Right join me donne le même résultat que Inner join.


On 28 mai, 20:36, Michel__D
wrote:
Il faut lire

[..]

Dans mon exemple T1.* représente donc tous les champs (*) de la requê te
  [RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le cha mp
  [TotalAnnéePrécédente] de la requête [RequêteTotalParAnné e]

[..]

Michel__D a écrit :

> Bonjour,

> T1, T2 représentent des Alias des tables qu'ils représentent.

> Par exemple, on peut écrire :
> 1)
> SELECT LeChamp
> FROM LaTable;
> ou
> 2)
> SELECT LaTable.LeChamp
> FROM LaTable;
> ou
> 3)
> SELECT T.LeChamp
> FROM LaTable AS T;

> Sachant que l'écriture 1) n'est pas toujours possible et donc pour
>  améliorer la visibilité de la requête il est bien souvent int éressant
>  d'utiliser l'écriture 3)

> Dans mon exemple T1.* représente donc tous les champs (*) de la table
>  [RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le ch amp
>  [TotalAnnéePrécédente] de la table [RequêteTotalParAnnée]

> PS:Par contre dés l'instant ou un alias a été spécifié, il fa ut
>  obligatoirement le mentionner afin d'identifier la provenance des ch amps.

> a écrit :
>> Bonjour Michel

>> pour la première requête, ok je l'avais faite.
>> pour la deuxième que representent T1.* et T2.[TotalAnnéePrécéd ente] ?

>> merci par avance

>> On 27 mai, 19:43, Michel__D
>> wrote:
>>> Comme il y avait des erreurs dans les propositions, voici les
>>> corrections :

>>> [RequêteTotalParAnnée]
>>> SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePré cédente]
>>> FROM LaTable
>>> GROUP BY IDProduit, [ValeurAnnée];

>>> SELECT T1.*, T2.
>>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParA nnée]
>>> AS T2
>>> ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 =
>>> T2.[ValeurAnnée]
>>> WHERE T1.[ValeurAnnée] = Year(Date());

>>> PS:A adapter bien sur.

>>> Michel__D a écrit :

>>>> Bonjour,
>>>> Pourquoi diable une table, tu veux faire un calcul, une requête es t
>>>> faite pour cela
>>>> [RequêteTotalParAnnée]
>>>> SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS
>>>> .[TotalAnnéePrécédente]
>>>> FROM LaTable
>>>> GROUP BY IDProduit, [ValeurAnnée];
>>>> Enfin un truc de ce style.
>>>> a écrit dans le message de news:
>>>>
>>>> Merci Michel__D pour cette lumière que je vois du fin fonds de mon
>>>> tunnel.
>>>> Si je comprends bien, dans ton exemple,  il me faudrait un table p ar
>>>> année ?
>>>> On 26 mai, 19:40, Michel__D
>>>> wrote:
>>>>> Bonjour,
>>>>> Il faut trouver les liaisons qui vont te permettre de faire
>>>>> correspondre tes enregistrements et donc ici cela devrait donner
>>>>> ceci :
>>>>> SELECT T1.* T2.[TotalAnnéePrécédente]
>>>>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalPa rAnnée]
>>>>> AS T2
>>>>> ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 =
>>>>> T2.[ValeurAnnée]
>>>>> WHERE T1.[ValeurAnnée] = Year(Date());
>>>>> PS:A adapter bien sur.
>>>>> a écrit :
>>>>>> Bonjour à tous,
>>>>>> J'ai un état basé sur une requête analyse croisée qui affi che mes
>>>>>> ventes par mois et par produit avec un total annuel.
>>>>>> Jusque là tout roule !
>>>>>> J'aimerais ajouter une colonne avec le total annuel des ventes par
>>>>>> produit de l'année précédente (à titre de comparatif). C'e st là
>>>>>> que je
>>>>>> sèche pitoyablement. Je n'y arrive pas même en passant par des
>>>>>> requêtes Union.
>>>>>> Quelqu'un aurait - il une piste à me soumettre ?
>>>>>> Merci par avance


Avatar
Michel__D
Bonjour,

La question est, quel résultat veux-tu ?


a écrit :
Merci pour ce cours magistral ;)
cependant le résultat avec inner join ne donne que les produits ayant
été vendus sur N et N-1, en essayant avec left join j'ai tous les
produits vendus sur N et les produits N-1 ayant aussi été vendus sur
la période N. Right join me donne le même résultat que Inner join.


On 28 mai, 20:36, Michel__D
wrote:
Il faut lire

[..]

Dans mon exemple T1.* représente donc tous les champs (*) de la requête
[RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le champ
[TotalAnnéePrécédente] de la requête [RequêteTotalParAnnée]

[..]

Michel__D a écrit :

Bonjour,
T1, T2 représentent des Alias des tables qu'ils représentent.
Par exemple, on peut écrire :
1)
SELECT LeChamp
FROM LaTable;
ou
2)
SELECT LaTable.LeChamp
FROM LaTable;
ou
3)
SELECT T.LeChamp
FROM LaTable AS T;
Sachant que l'écriture 1) n'est pas toujours possible et donc pour
améliorer la visibilité de la requête il est bien souvent intéressant
d'utiliser l'écriture 3)
Dans mon exemple T1.* représente donc tous les champs (*) de la table
[RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] le champ
[TotalAnnéePrécédente] de la table [RequêteTotalParAnnée]
PS:Par contre dés l'instant ou un alias a été spécifié, il faut
obligatoirement le mentionner afin d'identifier la provenance des champs.
a écrit :
Bonjour Michel
pour la première requête, ok je l'avais faite.
pour la deuxième que representent T1.* et T2.[TotalAnnéePrécédente] ?
merci par avance
On 27 mai, 19:43, Michel__D
wrote:
Comme il y avait des erreurs dans les propositions, voici les
corrections :
[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS [TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];
SELECT T1.*, T2.
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée]
AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 >>>>> T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());
PS:A adapter bien sur.
Michel__D a écrit :
Bonjour,
Pourquoi diable une table, tu veux faire un calcul, une requête est
faite pour cela
[RequêteTotalParAnnée]
SELECT IDProduit, [ValeurAnnée], SUM(Montant) AS
.[TotalAnnéePrécédente]
FROM LaTable
GROUP BY IDProduit, [ValeurAnnée];
Enfin un truc de ce style.
a écrit dans le message de news:

Merci Michel__D pour cette lumière que je vois du fin fonds de mon
tunnel.
Si je comprends bien, dans ton exemple, il me faudrait un table par
année ?
On 26 mai, 19:40, Michel__D
wrote:
Bonjour,
Il faut trouver les liaisons qui vont te permettre de faire
correspondre tes enregistrements et donc ici cela devrait donner
ceci :
SELECT T1.* T2.[TotalAnnéePrécédente]
FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotalParAnnée]
AS T2
ON T1.IDproduit = T2.IDproduit And T1.[ValeurAnnée] - 1 >>>>>>> T2.[ValeurAnnée]
WHERE T1.[ValeurAnnée] = Year(Date());
PS:A adapter bien sur.
a écrit :
Bonjour à tous,
J'ai un état basé sur une requête analyse croisée qui affiche mes
ventes par mois et par produit avec un total annuel.
Jusque là tout roule !
J'aimerais ajouter une colonne avec le total annuel des ventes par
produit de l'année précédente (à titre de comparatif). C'est là
que je
sèche pitoyablement. Je n'y arrive pas même en passant par des
requêtes Union.
Quelqu'un aurait - il une piste à me soumettre ?
Merci par avance

















1 2