Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionUpdate CLIENTS T2 Set NB_MENSUALITE /* Calcul du nombre de mensualités dues nombre de mois - la correction si le jour anniversaire n'est pas dépassé + le nombre d'années complètes x 12 mois */ Select (NB_MONTH - CORR_MONTH + NB_YEAR * 12) as NB_MENSUALITE from ( Select Case /* Calcul d'une correction : si le jour anniversaire n'est pas dépassé, la mensualité n'est pas due */ substring( (cast(Extract(DAY from CURRENT_DATE) - Extract(DAY from T1.DATE1) as varchar(3))) from 1 for 1) When '-' then 1 /* Jour non dépassé */ else 0 /* Jour anniversaire dépassé */ end as CORR_MONTH, Case /* Calcul du nombre de mois dus : si le numéro du mois de la date en cours est avant celui de la date de souscription, on est à cheval sur deux années */ substring( (cast(Extract(MONTH from T1.DATE1) - Extract(MONTH from CURRENT_DATE) - 1 as varchar(3))) from 1 for 1) When '-' then /* Mois en suivant */ Extract(MONTH from CURRENT_DATE) - Extract(MONTH from T1.DATE1) else /* à cheval sur deux années */ 12 - Extract(MONTH from T1.DATE1) + Extract(MONTH from CURRENT_DATE) end as NB_MONTH, Case /* Si on est à cheval sur deux années, le nombre de mois "à cheval" est déjà calculé dans NB_MONTH, donc on enlève un an */ substring( (cast(Extract(MONTH from T1.DATE1) - Extract(MONTH from CURRENT_DATE) - 1 as varchar(3))) from 1 for 1) When '-' then /* Mois en suivant */ Extract(YEAR from CURRENT_DATE) - Extract(YEAR from T1.DATE1) else /* à cheval sur deux années */ Extract(YEAR from CURRENT_DATE) - Extract(YEAR from T1.DATE1) - 1 end as NB_YEAR from CLIENTS T1 /* "Jointure" sur le n° de client */ WHERE T1.NUM_CLIENT = T2.NUM_CLIENT)
Cette requête (à adapter à tes noms de champs et de table) ne fonctionnera que si tu as un N° de client dans ta table.