Bonjour,

je suis nouveau sur le forum mais ce forum est ma "bible" quand j'ai un problème SQL. D'habitude, je recherche si mon problème a déjà été traité et souvent je trouve et je ne pose pas de question. Cette fois, je n'ai pas trouvé de réponse dans les sujets déjà ouvert...

Sous SQLServer 2005, j'ai une table des ventes structurée comme suit (je simplifie)

Magasin
article
Montant
date de vente

Cette table stocke les ventes de tous les magasins pour tous les articles.

Si je cherche les 10 articles les plus vendus pour un magasin donné (par exemple le magasin de Bordeaux), je fais la requete :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select top(10) with ties article, count(*) as nombre, sum(montant)
from table_des_ventes
where magasin='BORDEAUX'
group by article
order by nombre desc;
Ca fonctionne bien.

Maintenant je voudrais généraliser cette requête pour tous les magasins, c'est à dire avoir pour chaque magasin la liste des 10 articles les plus vendus (mais en ne faisant qu'une seule requête). Bien sûr, si c'est utile, je précise qu'il existe une table des magasins qui donne la liste exhaustive des magasins.

j'ai essayé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
select magasin, top(10) with ties article, count(*) as nombre, sum(montant)
from table_des_ventes
group by magasin, article
order by nombre desc;
mais ça ne passe pas au niveau de la syntaxe. J'ai essayé également avec des sous-requête mais sans succès non plus.

Quelqu'un a une idée du comment faire ?
Merci.