OVH Cloud OVH Cloud

Somme des derniers mois

3 réponses
Avatar
ArthurAccroc
Bonsoir,

Via une requête (et sous requête / fonction domaine ou personnalisée, j'ai
tout essayé...) je cherche à faire la somme des ventes des 6 derniers mois
(pour chacun des produits et chacun des mois de la table).
---Table source
champ1 Mois Valeur
produit1 200510 50
produit1 200511 30
....................
----Résultat souhaité
produit1 200510 50
produit1 200511 80 (50+30 = 80 produits vendus sur les 6 derniers
mois)

Si quelqu'un à une piste il est le bienvenue car là je suis sec.

3 réponses

Avatar
Eric
Bonjour,

(A améliorer)

En supposant que le champ Mois est de type Texte (au format aaaamm):
Une fonction à placer dans un module global pour déterminer le rang 6
mois avant la date ( on enleve 5 dans la fonction car j'utilise un
Between dans la fonction SomDom)

Function fnZZ(UnChamp As String) As String
Dim strAnnee As String, strMois As String
strAnnee = Left(UnChamp, 4)
strMois = Mid(UnChamp, 5, 2)
Select Case Val(strMois)
Case Is <= 5
strAnnee = Val(strAnnee) - 1
strMois = Format(Val(strMois) + 12 - 5, "00")
Case Else
strMois = Format(Val(strMois) - 5, "00")
End Select
fnZZ = strAnnee & strMois
End Function

et la requête :
SELECT chp1, mois,
IIf(IsNull([mois]),0,Val(DSum("Valeur","Arthur","Chp1='" & [chp1] & "'
and val(mois) between " & Val(fnZZ([Mois])) & " and " & Val([mois]))))
AS Cumulsur6mois
FROM LaTable
ORDER BY chp1, mois;



Bonsoir,

Via une requête (et sous requête / fonction domaine ou personnalisée, j'ai
tout essayé...) je cherche à faire la somme des ventes des 6 derniers mois
(pour chacun des produits et chacun des mois de la table).
---Table source
champ1 Mois Valeur
produit1 200510 50
produit1 200511 30
....................
----Résultat souhaité
produit1 200510 50
produit1 200511 80 (50+30 = 80 produits vendus sur les 6 derniers
mois)

Si quelqu'un à une piste il est le bienvenue car là je suis sec.




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
Ooops, :-(

Remplacer Arthur par LaTable dans la fonction DSum()
Val(DSum("Valeur","Arthur","Chp1='" ...


...
SELECT chp1, mois,
IIf(IsNull([mois]),0,Val(DSum("Valeur","Arthur","Chp1='" & [chp1] & "'
and val(mois) between " & Val(fnZZ([Mois])) & " and " & Val([mois]))))
AS Cumulsur6mois
FROM LaTable
ORDER BY chp1, mois;




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
ArthurAccroc
Super !!!
Merci. Je peux enfin aller me coucher. Zzzz...


"Eric" a écrit dans le message de news:

Bonjour,

(A améliorer)

En supposant que le champ Mois est de type Texte (au format aaaamm):
Une fonction à placer dans un module global pour déterminer le rang 6 mois
avant la date ( on enleve 5 dans la fonction car j'utilise un Between dans
la fonction SomDom)

Function fnZZ(UnChamp As String) As String
Dim strAnnee As String, strMois As String
strAnnee = Left(UnChamp, 4)
strMois = Mid(UnChamp, 5, 2)
Select Case Val(strMois)
Case Is <= 5
strAnnee = Val(strAnnee) - 1
strMois = Format(Val(strMois) + 12 - 5, "00")
Case Else
strMois = Format(Val(strMois) - 5, "00")
End Select
fnZZ = strAnnee & strMois
End Function

et la requête :
SELECT chp1, mois,
IIf(IsNull([mois]),0,Val(DSum("Valeur","Arthur","Chp1='" & [chp1] & "' and
val(mois) between " & Val(fnZZ([Mois])) & " and " & Val([mois])))) AS
Cumulsur6mois
FROM LaTable
ORDER BY chp1, mois;



Bonsoir,

Via une requête (et sous requête / fonction domaine ou personnalisée,
j'ai tout essayé...) je cherche à faire la somme des ventes des 6
derniers mois (pour chacun des produits et chacun des mois de la table).
---Table source
champ1 Mois Valeur
produit1 200510 50
produit1 200511 30
....................
----Résultat souhaité
produit1 200510 50
produit1 200511 80 (50+30 = 80 produits vendus sur les 6
derniers mois)

Si quelqu'un à une piste il est le bienvenue car là je suis sec.


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr