Avant de vous expliquer mon problème, je vais vous présenter brièvement la table "transactions" sur la quelle je souhaite effectuer une recherche.
Cette table comporte un champs "client", "date" d'achat, "montant" de la transaction et "renouvellement". Les montants correspondent à deux abonnements, 30€ pour un mois et 200€ pour un an.
Je souhaite comme résultat les chiffres d'affaire groupés par mois provenant des renouvellements 1 mois vers 1 mois ou 12 mois vers 12 mois (afin de mieux connaître le profil de mes clients)
La difficulté vient du fait que le champs "renouvellement" vaut 1 aussi dans le cas 1 mois vers 12 mois.
J'ai ici une ébauche de requête qui ne fait pas de distinctions des cas.
qui me donne comme résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT SUM(montant) AS CA, DATE_FORMAT(gen_date, '%M %Y') AS mois FROM transactions WHERE montant = 30 OR montant = 200 AND renouvellement = 1 GROUP BY DATE_FORMAT(gen_date, '%M %Y') ORDER BY DATE_FORMAT(gen_date, '%Y %m') DESC
Le problème est que je ne vois pas comment dire en mysql "Prends en compte cette achat, si l'achat précédent du même client est du même montant". Cela ressemble beaucoup à du procédural.CA mois
55489 December 2009
356874 November 2009
301456 October 2009
203727 September 2009
15487 August 2009
Serait-ce une histoire de curseur? Ou y a-t-il beaucoup plus simple?
Je vous remercie par avance.
Partager