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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stéphane
Le 21/10/2011 16:19, I.G.LOG a écrit :
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
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
Le 21/10/2011 16:19, I.G.LOG a écrit :
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
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.
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
I.G.LOG
"Stéphane" a écrit dans le message de news: j7ut78$hgb$
Le 21/10/2011 16:19, I.G.LOG a écrit :
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
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
"Stéphane" <stephane.miqueu@gmail.com> a écrit dans le message de news:
j7ut78$hgb$1@speranza.aioe.org...
Le 21/10/2011 16:19, I.G.LOG a écrit :
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
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
"Stéphane" a écrit dans le message de news: j7ut78$hgb$
Le 21/10/2011 16:19, I.G.LOG a écrit :
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
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