Bonjour,
Je me casse la tête depuis plusieurs jours sur le problème suivant :
Prenons une table employe(id,nom,prenom)
une table prime(id,id_employe,type,montant,debut,fin)
Debut et fin vont varier joyeusement et correspondre à des périodes de validité. Le type de primes également est très varié.
Je voudrais faire une vue qui rétablit l'année par mensualité, pour préparer un tableau html. J'aurais préféré traiter cela dès le sql plutôt qu'en PHP.
Du genre
DUPONT/Jean/Prime A/ montant Janvier/ montant Février/ montant mars.... / montant décembre
DUPONT/Jean/Prime B/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
MARTIN/Jeanne/Prime B/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
WATSON/James/Prime A/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
WATSON/James/Prime F/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
voici où j'en suis de mes... tentatives infructueuses :
En gros, les sommes ne sont jamais les bonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select distinct employe.nom,employe.prenom,prime.type, sum(case when "2011-01-27" between prime.debut and prime.fin then prime.montant else 0 end) as montant_01, sum(case when "2011-02-27" between prime.debut and prime.fin then prime.montant else 0 end) as montant_02, etc... sum(case when "2011-12-27" between prime.debut and prime.fin then prime.montant else 0 end) as montant_12 from employe,prime where prime.id_employe=employe.id group by prime.id_employe,prime.type order by nom,prenom,field(prime.type,"C","A","B","F")
Partager