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.

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
qui me donne comme résultat :

CA mois
55489 December 2009
356874 November 2009
301456 October 2009
203727 September 2009
15487 August 2009
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.
Serait-ce une histoire de curseur? Ou y a-t-il beaucoup plus simple?

Je vous remercie par avance.