OVH Cloud OVH Cloud

calcul sur 12 mois glissants

4 réponses
Avatar
ALF
Bonjour,
j'ai une table contenant 4 champs: ENTITE, MOIS, ANNEE ,MESURE
je voudrais creer un champs calculé dans une requete selection qui ferait
sur le mois M ,la somme des 12 mois precedents.
ex pour JANVIER 2006 ,je voudrais la somme de FEVRIER 2005 à
JANVIER-2006..pour FEVRIER-2006,cela doit être la somme de MARS 2005 à
FEVRIER 2006...ETC...
Comment doit on s'y prendre???..faut il passer par une procedure via un
module ou existe t il une fonction speciale que l on mettrait directement
dans la requete via le mode "générer"???
Merci de votre soutien.
--
ALF

4 réponses

Avatar
Ilan
Bonjour, que contient le champ MOIS ? le mois en toute lettre ou l'indice du
mois ?
Ca devrait donner une requete du genre
SELECT A.ENTITE, A.MOIS, A.ANNEE, SUM(B.MESURE)
FROM TABLE AS A LEFT JOIN TABLE AS B
ON Date(B)>ÚteAdd("m",-11,Date(A) AND Date(B)<Úte(A)
GROUP BY A.ENTITE, A.MOIS, A.ANNEE

Ou Date(B)= Format(b.annee & "/" & b.mois ,"yyyy/mm")
Date(A)=Format(a.annee & "/" & a.mois ,"yyyy/mm")
DateAdd("m",-11,Date(A) = Format(DateAdd("m",-11,Date(A)), "yyyy/mm")



Bonjour,
j'ai une table contenant 4 champs: ENTITE, MOIS, ANNEE ,MESURE
je voudrais creer un champs calculé dans une requete selection qui ferait
sur le mois M ,la somme des 12 mois precedents.
ex pour JANVIER 2006 ,je voudrais la somme de FEVRIER 2005 à
JANVIER-2006..pour FEVRIER-2006,cela doit être la somme de MARS 2005 à
FEVRIER 2006...ETC...
Comment doit on s'y prendre???..faut il passer par une procedure via un
module ou existe t il une fonction speciale que l on mettrait directement
dans la requete via le mode "générer"???
Merci de votre soutien.
--
ALF


Avatar
Synopsis
Tu crées une vue :

SELECT
A.*
, (
SELECT SUM(mesure)
FROM maTable as B
WHERE B.entite = A.entite
and [ (B.annee * 12 + B.mois) - (A.annee * 12 + A.mois) ]
between 0 and 11
) as mesure_12m
FROM maTable as A

N.B. : Nombre de mois entre 2 dates

Exemple : Juin 2005 et Février 2006

N = (2006 * 12 + 2 ) - (2005 * 12 + 6 )
N = 24074 - 24066
N = 8 mois





"ALF" a écrit dans le message de
news:
Bonjour,
j'ai une table contenant 4 champs: ENTITE, MOIS, ANNEE ,MESURE
je voudrais creer un champs calculé dans une requete selection qui ferait
sur le mois M ,la somme des 12 mois precedents.
ex pour JANVIER 2006 ,je voudrais la somme de FEVRIER 2005 à
JANVIER-2006..pour FEVRIER-2006,cela doit être la somme de MARS 2005 à
FEVRIER 2006...ETC...
Comment doit on s'y prendre???..faut il passer par une procedure via un
module ou existe t il une fonction speciale que l on mettrait directement
dans la requete via le mode "générer"???
Merci de votre soutien.
--
ALF


Avatar
ALF
Re,
J'ai du mal expliquer mon problême et je m'en excuse...en fait il y a 3
champs ENTITE ,MOIS ,MESURE en sachant que le champs MOIS correspond à du
texte .par ex. JANVIER-2006 et le champs MESURE correspond à un montant
(valeur reel double)
lorque je parlais de "somme des 12 mois precedents" cela correspondait en
fait a la somme des 12 valeurs du champs "MESURE" correspondant aux 12 mois
precedant le mois M(M compris).----->en fait la somme de 12 montants sur le
champs MESURE.
ex: mois M= JANVIER-2006 MESURE= 400 (correspond à 400 euros).
FEVRIER-2005 MESURE= 200 MARS-2005 MESURE= 100 AVRIL-2005 MESURE= 500
MAI-2005 MESURE= 400 JUIN-2005 MESURE= 100 JUILLET-2005 MESURE= 800
AOUT-2005 MESURE= 500 SEPTEMBRE-2005 MESURE= 700 OCTOBRE-2005 MESURE= 600
NOVEMBRE-2005 MESURE= 400 DECEMBRE-2005 MESURE= 100

donc le champs calculé pour MESURE (JANVIER-2006)
=MESURE(FEVRIER-2005)+MESURE(MARS-2005)+MESURE(AVRIL-2005)+MESURE(MAI-2005)+MESURE(JUIN-2005)+MESURE(JUILLET-2005)+MESURE(AOUT-2005)+MESURE(SEPTEMBRE-2005)+MESURE(OCTOBRE-2005)+MESURE(NOVEMBRE-2005)+MESURE(DECEMBRE-2005)+MESURE(JANVIER-2006)= 4800

2eme ex:si mois M þVRIER-2006 MESURE(M) calculé
=(MESURE(MARS-2005)+MESURE(MARS-2005)+...etc.....MESURE(FEVRIER-2006)

En fait MESURE calculée Mois M= MESURE M-11+MESURE M-10+MESURE M-9+MESURE
M-8+MESURE M-7+MESURE M-6+MESURE M-5+MESURE M-4+MESURE M-3+MESURE M-2+MESURE
M-1+MESURE M)

Merci encore pour votre soutien.

--
ALF



Tu crées une vue :

SELECT
A.*
, (
SELECT SUM(mesure)
FROM maTable as B
WHERE B.entite = A.entite
and [ (B.annee * 12 + B.mois) - (A.annee * 12 + A.mois) ]
between 0 and 11
) as mesure_12m
FROM maTable as A

N.B. : Nombre de mois entre 2 dates

Exemple : Juin 2005 et Février 2006

N = (2006 * 12 + 2 ) - (2005 * 12 + 6 )
N = 24074 - 24066
N = 8 mois





"ALF" a écrit dans le message de
news:
Bonjour,
j'ai une table contenant 4 champs: ENTITE, MOIS, ANNEE ,MESURE
je voudrais creer un champs calculé dans une requete selection qui ferait
sur le mois M ,la somme des 12 mois precedents.
ex pour JANVIER 2006 ,je voudrais la somme de FEVRIER 2005 à
JANVIER-2006..pour FEVRIER-2006,cela doit être la somme de MARS 2005 à
FEVRIER 2006...ETC...
Comment doit on s'y prendre???..faut il passer par une procedure via un
module ou existe t il une fonction speciale que l on mettrait directement
dans la requete via le mode "générer"???
Merci de votre soutien.
--
ALF







Avatar
Ilan
C'est exactement ce que synopsis et moi t'avons donné. Par contre; pour
trouver la correspondance des mois majuscules en mois nombre....


Re,
J'ai du mal expliquer mon problême et je m'en excuse...en fait il y a 3
champs ENTITE ,MOIS ,MESURE en sachant que le champs MOIS correspond à du
texte .par ex. JANVIER-2006 et le champs MESURE correspond à un montant
(valeur reel double)
lorque je parlais de "somme des 12 mois precedents" cela correspondait en
fait a la somme des 12 valeurs du champs "MESURE" correspondant aux 12 mois
precedant le mois M(M compris).----->en fait la somme de 12 montants sur le
champs MESURE.
ex: mois M= JANVIER-2006 MESURE= 400 (correspond à 400 euros).
FEVRIER-2005 MESURE= 200 MARS-2005 MESURE= 100 AVRIL-2005 MESURE= 500
MAI-2005 MESURE= 400 JUIN-2005 MESURE= 100 JUILLET-2005 MESURE= 800
AOUT-2005 MESURE= 500 SEPTEMBRE-2005 MESURE= 700 OCTOBRE-2005 MESURE= 600
NOVEMBRE-2005 MESURE= 400 DECEMBRE-2005 MESURE= 100

donc le champs calculé pour MESURE (JANVIER-2006)
=MESURE(FEVRIER-2005)+MESURE(MARS-2005)+MESURE(AVRIL-2005)+MESURE(MAI-2005)+MESURE(JUIN-2005)+MESURE(JUILLET-2005)+MESURE(AOUT-2005)+MESURE(SEPTEMBRE-2005)+MESURE(OCTOBRE-2005)+MESURE(NOVEMBRE-2005)+MESURE(DECEMBRE-2005)+MESURE(JANVIER-2006)= 4800

2eme ex:si mois M þVRIER-2006 MESURE(M) calculé
=(MESURE(MARS-2005)+MESURE(MARS-2005)+...etc.....MESURE(FEVRIER-2006)

En fait MESURE calculée Mois M= MESURE M-11+MESURE M-10+MESURE M-9+MESURE
M-8+MESURE M-7+MESURE M-6+MESURE M-5+MESURE M-4+MESURE M-3+MESURE M-2+MESURE
M-1+MESURE M)

Merci encore pour votre soutien.

--
ALF



Tu crées une vue :

SELECT
A.*
, (
SELECT SUM(mesure)
FROM maTable as B
WHERE B.entite = A.entite
and [ (B.annee * 12 + B.mois) - (A.annee * 12 + A.mois) ]
between 0 and 11
) as mesure_12m
FROM maTable as A

N.B. : Nombre de mois entre 2 dates

Exemple : Juin 2005 et Février 2006

N = (2006 * 12 + 2 ) - (2005 * 12 + 6 )
N = 24074 - 24066
N = 8 mois





"ALF" a écrit dans le message de
news:
Bonjour,
j'ai une table contenant 4 champs: ENTITE, MOIS, ANNEE ,MESURE
je voudrais creer un champs calculé dans une requete selection qui ferait
sur le mois M ,la somme des 12 mois precedents.
ex pour JANVIER 2006 ,je voudrais la somme de FEVRIER 2005 à
JANVIER-2006..pour FEVRIER-2006,cela doit être la somme de MARS 2005 à
FEVRIER 2006...ETC...
Comment doit on s'y prendre???..faut il passer par une procedure via un
module ou existe t il une fonction speciale que l on mettrait directement
dans la requete via le mode "générer"???
Merci de votre soutien.
--
ALF