Bonjour à tous,

Je viens solliciter votre aide quant à l'utilisation du pivot dans une requête sql.

La base de donnée sur laquelle je désire faire une requête est une base de données de ventes d'une chaine de 15 magasins.

Voici une requête avec laquelle j'ai testé l'utilisation de l'opérateur (est-ce le bon terme?) pivot :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
select sum(a.ca),[009],[011],[012],[015],[017],[020],[022],[024],[026],[029],[042],[043],[050],[054],[056]
 
from (select siege, qt
from tb2010
where date = '20100102') as sourceTable
 
pivot
 
(sum(qt)  for siege in ([009],[011],[012],[015],[017],[020],[022],[024],[026],[029],[042],[043],[050],[054],[056])) as pivotTable,
 
tb2010 as a
 
where date = '20100102'
 
group by [009],[011],[012],[015],[017],[020],[022],[024],[026],[029],[042],[043],[050],[054],[056]
Cette requête fonctionne fort bien et dans le cas présent me donne comme résultat :
- dans la première colonne, le chiffre d'affaire global pour la journée du 2 janvier 2010
- dans les 15 colonnes suivantes, la quantité d'articles vendus par magasin (il y en a donc 15) pour la même journée. Les noms des 15 dernières colonnes peuvent paraître étranges mais ce sont les identifiants donnés aux différents magasins.

Partant de cela, j'ai voulu étendre la requête pour coller avec la demande qui m'avait été faite et voici la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
select	gib, ray, substring(eanart,1,12) as ean, pu, sum(qt) as 'qt', sum(ca) as 'ca', sum(rab) as 'rab', 
		[009],[011],[012],[015],[017],[020],[022],[024],[026],[029],[042],[043],[050],[054],[056]
from
		(select	siege, qt
		from	tb2010
		where	date >= '20100201' and date <= '20100630' 
				and gib in ('525', '527') 
				and ray like '4%' 
		) as sourceTable
pivot	(
		sum(qt) for siege in 
		([009],[011],[012],[015],[017],[020],[022],[024],[026],[029],[042],[043],[050],[054],[056])
		) as pivotTable,
tb2010
 
where	date >= '20100201' and date <= '20100630' 
	and gib in ('525', '527') 
	and ray like '4%' 
 
group by gib, ray, substring(eanart,1,12), pu, 
		[009],[011],[012],[015],[017],[020],[022],[024],[026],[029],[042],[043],[050],[054],[056]
 
order by ca desc
Celle-ci est sensé me donner le code gib (données propres à la gestion interne), le numéro de rayon, le code ean de l'article, le prix unitaire, le nombre d'articles vendus, la somme de chiffre d'affaire brut et la somme des rabais par article. A cela, s'ajoute 15 colonnes qui sont sensées contenir le nombre d'articles vendus par magasin.

Malheureusement pour moi, cela ne fonctionne pas et j'avoue volontiers que je patauge joyeusement dans l'utilisation du pivot.

Quelqu'un de compétent pourrait-il m'aider dans la réalisation de cette requête ?

J'espère avoir été clair :-/ . Si ce n'est pas le cas, n'hésitez pas me demander des compléments d'informations.

Merci d'avance.

Griftou.