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

7 réponses

1 2
Avatar
dly268
Le résultat souhaité serait schématiquement comme ce qui suit :

| jan | fev | mar | avr | mai | juin| juil | aout | sept
| oct | nov| dec| total N | total N-1 | delta |

produit 1 80
20 100
produit
2
150
produit 3
20
100 120 130
....

mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qui
est la somme annuelle produit par produit de l'année précédente que l e
produit ait été ou non vendu sur N.

Merci par avance pour ta diligence.

On 29 mai, 19:47, Michel__D
wrote:
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 su r
> 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 in téressant
>>>  d'utiliser l'écriture 3)
>>> Dans mon exemple T1.* représente donc tous les champs (*) de la tab le
>>>  [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ê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.
>>>>> 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 m on
>>>>>> 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êteTotal ParAnné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 af fiche 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 p ar
>>>>>>>> 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 d es
>>>>>>>> requêtes Union.
>>>>>>>> Quelqu'un aurait - il une piste à me soumettre ?
>>>>>>>> Merci par avance


Avatar
Michel__D
Re,

Ok, donc tu veux voir tous les produits, une solution consiste à faire
apparaître tous les produits dans les 2 requêtes, voici par exemple ce
que cela donnerai pour la requête [RequêteTotalAnnéePréc]

Soit la table [TableProduit] qui référence tout les produits.

[RequêteTotalAnnéePréc]
SELECT T1.IDProduit, SUM(T2.Montant) AS [total N-1]
FROM TableProduit AS T1 LEFT JOIN LaTable AS T2
ON T1.IDproduit = T2.IDproduit
WHERE T2.[ValeurAnnée]=Year(Date())-1
GROUP BY T1.IDProduit;

A adapter aussi sur l'autre requête d'analyse croisée.


a écrit :
Le résultat souhaité serait schématiquement comme ce qui suit :

| jan | fev | mar | avr | mai | juin| juil | aout | sept
| oct | nov| dec| total N | total N-1 | delta |

produit 1 80
20 100
produit
2
150
produit 3
20
100 120 130
.....

mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qui
est la somme annuelle produit par produit de l'année précédente que le
produit ait été ou non vendu sur N.

Merci par avance pour ta diligence.

On 29 mai, 19:47, Michel__D
wrote:
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





















Avatar
dly268
hello,

merci encore pour ton aide.
je n'arrive toujours pas à afficher la colonne des totaux N-1 dans ma
requête analyse croisée car cette dernière n'accepte qu'une en-tête de
colonne. Peut-être existe - il un moyen via un état pour pouvoir
afficher cette colonne N-1 ?

On 30 mai, 18:59, Michel__D
wrote:
Re,

Ok, donc tu veux voir tous les produits, une solution consiste à faire
  apparaître tous les produits dans les 2 requêtes, voici par exemp le ce
  que cela donnerai pour la requête [RequêteTotalAnnéePréc]

Soit la table [TableProduit] qui référence tout les produits.

[RequêteTotalAnnéePréc]
SELECT T1.IDProduit, SUM(T2.Montant) AS [total N-1]
FROM TableProduit AS T1 LEFT JOIN LaTable AS T2
ON T1.IDproduit = T2.IDproduit
WHERE T2.[ValeurAnnée]=Year(Date())-1
GROUP BY T1.IDProduit;

A adapter aussi sur l'autre requête d'analyse croisée.

a écrit :

> Le résultat souhaité serait schématiquement comme ce qui suit :

>              |  jan | fev | mar | avr | mai | juin| jui l | aout | sept
> | oct | nov| dec| total N | total N-1 | delta |

> produit 1    80
> 20                                                100
> produit
> 2
> 150
> produit 3
> 20
> 100                120        130
> .....

> mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qui
> est la somme annuelle produit par produit de l'année précédente q ue le
> produit ait été ou non vendu sur N.

> Merci par avance pour ta diligence.

> On 29 mai, 19:47, Michel__D
> wrote:
>> 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 aya nt
>>> é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 jo in..
>>> On 28 mai, 20:36, Michel__D
>>> wrote:
>>>> Il faut lire
>>>> [..]
>>>> Dans mon exemple T1.* représente donc tous les champs (*) de la re quête
>>>>   [RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] l e champ
>>>>   [TotalAnnéePrécédente] de la requête [RequêteTotalParA nné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 pou r
>>>>>  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 t able
>>>>>  [RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédente] l e 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é, i l faut
>>>>>  obligatoirement le mentionner afin d'identifier la provenance de s 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éeP récédente]
>>>>>>> FROM LaTable
>>>>>>> GROUP BY IDProduit, [ValeurAnnée];
>>>>>>> SELECT T1.*, T2.
>>>>>>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTotal ParAnné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êt e 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 tab le 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 donne r
>>>>>>>>> ceci :
>>>>>>>>> SELECT T1.* T2.[TotalAnnéePrécédente]
>>>>>>>>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteTot alParAnné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
Bonjour,

Donc tout ce que je t'ai raconté jusqu'à présent n'a servi à rien !

Donne le SQL de ta requête d'analyse croisée.


a écrit :
hello,

merci encore pour ton aide.
je n'arrive toujours pas à afficher la colonne des totaux N-1 dans ma
requête analyse croisée car cette dernière n'accepte qu'une en-tête de
colonne. Peut-être existe - il un moyen via un état pour pouvoir
afficher cette colonne N-1 ?

On 30 mai, 18:59, Michel__D
wrote:
Re,

Ok, donc tu veux voir tous les produits, une solution consiste à faire
apparaître tous les produits dans les 2 requêtes, voici par exemple ce
que cela donnerai pour la requête [RequêteTotalAnnéePréc]

Soit la table [TableProduit] qui référence tout les produits.

[RequêteTotalAnnéePréc]
SELECT T1.IDProduit, SUM(T2.Montant) AS [total N-1]
FROM TableProduit AS T1 LEFT JOIN LaTable AS T2
ON T1.IDproduit = T2.IDproduit
WHERE T2.[ValeurAnnée]=Year(Date())-1
GROUP BY T1.IDProduit;

A adapter aussi sur l'autre requête d'analyse croisée.

a écrit :

Le résultat souhaité serait schématiquement comme ce qui suit :
| jan | fev | mar | avr | mai | juin| juil | aout | sept
| oct | nov| dec| total N | total N-1 | delta |
produit 1 80
20 100
produit
2
150
produit 3
20
100 120 130
.....
mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qui
est la somme annuelle produit par produit de l'année précédente que le
produit ait été ou non vendu sur N.
Merci par avance pour ta diligence.
On 29 mai, 19:47, Michel__D
wrote:
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

























Avatar
dly268
Voici le SQL :

TRANSFORM Sum([rqt globale].saisie) AS SommeDesaisie
SELECT [rqt globale].libcatproduit, [rqt globale].libproduit, Sum([rqt
globale].saisie) AS [Total N]
FROM [rqt globale]
GROUP BY [rqt globale].libcatproduit, [rqt globale].libproduit
PIVOT Format([Datejournal],"mmm") In
("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","no v","déc");



On 31 mai, 12:28, Michel__D
wrote:
Bonjour,

Donc tout ce que je t'ai raconté jusqu'à présent n'a servi à rien !

Donne le SQL de ta requête d'analyse croisée.

a écrit :

> hello,

> merci encore pour ton aide.
> je n'arrive toujours pas à afficher la colonne des totaux N-1 dans ma
> requête analyse croisée car cette dernière n'accepte qu'une en-t ête de
> colonne. Peut-être existe - il un moyen via un état pour pouvoir
> afficher cette colonne N-1 ?

> On 30 mai, 18:59, Michel__D
> wrote:
>> Re,

>> Ok, donc tu veux voir tous les produits, une solution consiste à fai re
>>   apparaître tous les produits dans les 2 requêtes, voici par ex emple ce
>>   que cela donnerai pour la requête [RequêteTotalAnnéePréc]

>> Soit la table [TableProduit] qui référence tout les produits.

>> [RequêteTotalAnnéePréc]
>> SELECT T1.IDProduit, SUM(T2.Montant) AS [total N-1]
>> FROM TableProduit AS T1 LEFT JOIN LaTable AS T2
>> ON T1.IDproduit = T2.IDproduit
>> WHERE T2.[ValeurAnnée]=Year(Date())-1
>> GROUP BY T1.IDProduit;

>> A adapter aussi sur l'autre requête d'analyse croisée.

>> a écrit :

>>> Le résultat souhaité serait schématiquement comme ce qui suit :
>>>              |  jan | fev | mar | avr | mai | juin| j uil | aout | sept
>>> | oct | nov| dec| total N | total N-1 | delta |
>>> produit 1    80
>>> 20                                                100
>>> produit
>>> 2
>>> 150
>>> produit 3
>>> 20
>>> 100                120        130
>>> .....
>>> mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qu i
>>> est la somme annuelle produit par produit de l'année précédente que le
>>> produit ait été ou non vendu sur N.
>>> Merci par avance pour ta diligence.
>>> On 29 mai, 19:47, Michel__D
>>> wrote:
>>>> 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 a yant
>>>>> été vendus sur N et N-1, en essayant avec left join j'ai tous l es
>>>>> produits vendus sur N et les produits N-1 ayant aussi été vendu s 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êteTotalPa rAnné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 p our
>>>>>>>  améliorer la visibilité de la requête il est bien souven t 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êteTot alParAnné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:
>>>>>>>>>> om.....
>>>>>>>>>> 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 t able par
>>>>>>>>>> année ?
>>>>>>>>>> On 26 mai, 19:40, Michel__D id>
>>>>>>>>>> wrote:
>>>>>>>>>>> Bonjour,
>>>>>>>>>>> Il faut trouver les liaisons qui vont te permettre de faire
>>>>>>>>>>> correspondre tes enregistrements et donc ici cela devrait don ner
>>>>>>>>>>> ceci :
>>>>>>>>>>> SELECT T1.* T2.[TotalAnnéePrécédente]
>>>>>>>>>>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [RequêteT otalParAnné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 qu i 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 vent es 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 p ar des
>>>>>>>>>>>> requêtes Union.
>>>>>>>>>>>> Quelqu'un aurait - il une piste à me soumettre ?
>>>>>>>>>>>> Merci par avance


Avatar
dly268
Bonjour Michel__D

J'ai enfin trouvé grâce à ton aide éclairée. Merci encore
Bonne journée.

On 1 juin, 13:38, Michel__D
wrote:
Bonjour,

En fait j'aurais du dire, ainsi que toutes les requêtes qui sont utilis ées
  par ta requête d'analyse croisée.

a écrit :

> Voici le SQL :

> TRANSFORM Sum([rqt globale].saisie) AS SommeDesaisie
> SELECT [rqt globale].libcatproduit, [rqt globale].libproduit, Sum([rqt
> globale].saisie) AS [Total N]
> FROM [rqt globale]
> GROUP BY [rqt globale].libcatproduit, [rqt globale].libproduit
> PIVOT Format([Datejournal],"mmm") In
> ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct" ,"nov","déc");

> On 31 mai, 12:28, Michel__D
> wrote:
>> Bonjour,

>> Donc tout ce que je t'ai raconté jusqu'à présent n'a servi à r ien !

>> Donne le SQL de ta requête d'analyse croisée.

>> a écrit :

>>> hello,
>>> merci encore pour ton aide.
>>> je n'arrive toujours pas à afficher la colonne des totaux N-1 dans ma
>>> requête analyse croisée car cette dernière n'accepte qu'une en- tête de
>>> colonne. Peut-être existe - il un moyen via un état pour pouvoir
>>> afficher cette colonne N-1 ?
>>> On 30 mai, 18:59, Michel__D
>>> wrote:
>>>> Re,
>>>> Ok, donc tu veux voir tous les produits, une solution consiste à f aire
>>>>   apparaître tous les produits dans les 2 requêtes, voici par exemple ce
>>>>   que cela donnerai pour la requête [RequêteTotalAnnéePréc ]
>>>> Soit la table [TableProduit] qui référence tout les produits.
>>>> [RequêteTotalAnnéePréc]
>>>> SELECT T1.IDProduit, SUM(T2.Montant) AS [total N-1]
>>>> FROM TableProduit AS T1 LEFT JOIN LaTable AS T2
>>>> ON T1.IDproduit = T2.IDproduit
>>>> WHERE T2.[ValeurAnnée]=Year(Date())-1
>>>> GROUP BY T1.IDProduit;
>>>> A adapter aussi sur l'autre requête d'analyse croisée.
>>>> a écrit :
>>>>> Le résultat souhaité serait schématiquement comme ce qui suit :
>>>>>              |  jan | fev | mar | avr | mai | juin| juil | aout | sept
>>>>> | oct | nov| dec| total N | total N-1 | delta |
>>>>> produit 1    80
>>>>> 20                                                100
>>>>> produit
>>>>> 2
>>>>> 150
>>>>> produit 3
>>>>> 20
>>>>> 100                120        130
>>>>> .....
>>>>> mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qui
>>>>> est la somme annuelle produit par produit de l'année précéden te que le
>>>>> produit ait été ou non vendu sur N.
>>>>> Merci par avance pour ta diligence.
>>>>> On 29 mai, 19:47, Michel__D
>>>>> wrote:
>>>>>> 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é ven dus sur
>>>>>>> la période N. Right join me donne le même résultat que Inne r join..
>>>>>>> On 28 mai, 20:36, Michel__D
>>>>>>> wrote:
>>>>>>>> Il faut lire
>>>>>>>> [..]
>>>>>>>> Dans mon exemple T1.* représente donc tous les champs (*) de l a requête
>>>>>>>>   [RequêteAnalyseCroisée] et T2.[TotalAnnéePrécédent e] le champ
>>>>>>>>   [TotalAnnéePrécédente] de la requête [RequêteTotal ParAnnée]
>>>>>>>> [..]
>>>>>>>> Michel__D a écrit :
>>>>>>>>> Bonjour,
>>>>>>>>> T1, T2 représentent des Alias des tables qu'ils représenten t.
>>>>>>>>> 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 souv ent 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édent e] le champ
>>>>>>>>>  [TotalAnnéePrécédente] de la table [RequêteTotalParA nnée]
>>>>>>>>> PS:Par contre dés l'instant ou un alias a été spécifi é, il faut
>>>>>>>>>  obligatoirement le mentionner afin d'identifier la provenanc e 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 id>
>>>>>>>>>> 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êteT otalParAnné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:
>>>>>>>>>>>> .com.....
>>>>>>>>>>>> Merci Michel__D pour cette lumière que je vois du fin fond s 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 alid>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> Bonjour,
>>>>>>>>>>>>> Il faut trouver les liaisons qui vont te permettre de faire
>>>>>>>>>>>>> correspondre tes enregistrements et donc ici cela devrait d onner
>>>>>>>>>>>>> ceci :
>>>>>>>>>>>>> SELECT T1.* T2.[TotalAnnéePrécédente]
>>>>>>>>>>>>> FROM [RequêteAnalyseCroisée] AS T1 INNER JOIN [Requêt eTotalParAnné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 ve ntes par
>>>>>>>>>>>>>> produit de l'année précédente (à titre de comparat if). 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,

En fait j'aurais du dire, ainsi que toutes les requêtes qui sont utilisées
par ta requête d'analyse croisée.


a écrit :
Voici le SQL :

TRANSFORM Sum([rqt globale].saisie) AS SommeDesaisie
SELECT [rqt globale].libcatproduit, [rqt globale].libproduit, Sum([rqt
globale].saisie) AS [Total N]
FROM [rqt globale]
GROUP BY [rqt globale].libcatproduit, [rqt globale].libproduit
PIVOT Format([Datejournal],"mmm") In
("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");



On 31 mai, 12:28, Michel__D
wrote:
Bonjour,

Donc tout ce que je t'ai raconté jusqu'à présent n'a servi à rien !

Donne le SQL de ta requête d'analyse croisée.

a écrit :

hello,
merci encore pour ton aide.
je n'arrive toujours pas à afficher la colonne des totaux N-1 dans ma
requête analyse croisée car cette dernière n'accepte qu'une en-tête de
colonne. Peut-être existe - il un moyen via un état pour pouvoir
afficher cette colonne N-1 ?
On 30 mai, 18:59, Michel__D
wrote:
Re,
Ok, donc tu veux voir tous les produits, une solution consiste à faire
apparaître tous les produits dans les 2 requêtes, voici par exemple ce
que cela donnerai pour la requête [RequêteTotalAnnéePréc]
Soit la table [TableProduit] qui référence tout les produits.
[RequêteTotalAnnéePréc]
SELECT T1.IDProduit, SUM(T2.Montant) AS [total N-1]
FROM TableProduit AS T1 LEFT JOIN LaTable AS T2
ON T1.IDproduit = T2.IDproduit
WHERE T2.[ValeurAnnée]=Year(Date())-1
GROUP BY T1.IDProduit;
A adapter aussi sur l'autre requête d'analyse croisée.
a écrit :
Le résultat souhaité serait schématiquement comme ce qui suit :
| jan | fev | mar | avr | mai | juin| juil | aout | sept
| oct | nov| dec| total N | total N-1 | delta |
produit 1 80
20 100
produit
2
150
produit 3
20
100 120 130
.....
mon seul souci est d'afficher pour ce tableau la colonne Total N-1 qui
est la somme annuelle produit par produit de l'année précédente que le
produit ait été ou non vendu sur N.
Merci par avance pour ta diligence.
On 29 mai, 19:47, Michel__D
wrote:
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