[WD12 - MySQL] Aux spécialistes SQL
Le
I.G.LOG

Bonjour à tous,
j'ai - classiquement - une table "facture" et une autre "ligne_Facture" dans
laquelle je stocke les ventes d'articles.
Je voudrais faire une requete d'analyse statistique des ventes sur les douze
derniers mois (par exemple) pour un article.
Habituellement je traite ce type de requete avec des unions pour stocker les
resultats sous forme de colonne, comme suit:
select TOT1, TOT2, TOT3 from
(select sum(xxx) as TOT1, 0 as TOT2, 0 as TOT3 from ligne_facture where date
between )
union
(select 0 as TOT1, sum(xxx) as TOT2, 0 as TOT3 from ligne_facture where date
between )
Mais je voudrais laisser l'utilisateur choisir la période et les
intervalles. De ce fait je ne vois pas comment construire une telle requete
dynamiquement.
Voyez vous une solution simple a ce probleme ?
Merci
j'ai - classiquement - une table "facture" et une autre "ligne_Facture" dans
laquelle je stocke les ventes d'articles.
Je voudrais faire une requete d'analyse statistique des ventes sur les douze
derniers mois (par exemple) pour un article.
Habituellement je traite ce type de requete avec des unions pour stocker les
resultats sous forme de colonne, comme suit:
select TOT1, TOT2, TOT3 from
(select sum(xxx) as TOT1, 0 as TOT2, 0 as TOT3 from ligne_facture where date
between )
union
(select 0 as TOT1, sum(xxx) as TOT2, 0 as TOT3 from ligne_facture where date
between )
Mais je voudrais laisser l'utilisateur choisir la période et les
intervalles. De ce fait je ne vois pas comment construire une telle requete
dynamiquement.
Voyez vous une solution simple a ce probleme ?
Merci
Et avec un truc du genre :
SELECT
SUM(CASE WHEN MONTH(DateLigne) = 1 THEN Prix ELSE 0 END) AS "TOT1",
SUM(CASE WHEN MONTH(DateLigne) = 2 THEN Prix ELSE 0 END) AS "TOT2",
SUM(CASE WHEN MONTH(DateLigne) = 3 THEN Prix ELSE 0 END) AS "TOT3",
...
FROM ligne_facture
Ensuite tu peux remplacer MONTH(DateLigne)=x par le test qui te convient.
--
Ami Calmant
Stéphane
Bonjour,
Effectivement, c'est une piste que je vais creuser.
Merci beaucoup pour la réponse
Phil