Pb avec un SUM + CASE

Résolu
Bonjour,

J'ai une fonction dans laquelle je voudrais calculer plusieurs totaux avec des conditions.
Voici ma requête :
CURSOR liste_elements (startstring varchar) IS
SELECT societe,etabli,matric,nudosp,identite,SUM(MONSAL + MONPAT) SOMME1, SUM(KFB2) SOMME2 FROM
(
SELECT CASE
WHEN a.etabli like '955%' THEN a.etabli
WHEN a.etabli like '956%' THEN a.etabli
ELSE substr(a.etabli,1,3)
END SOCIETE,a.etabli,a.matric,a.nudosp,
RTRIM(c.nomuse)||' '||RTRIM(c.prenom) IDENTITE,
CASE
WHEN SUBSTR(a.perpai,3) < 201305 and b.codrub in ('FKE','FKJ')
THEN -25*b.monsal
WHEN SUBSTR(a.perpai,3) > 201305 and b.codrub in ('FKE','FKJ')
THEN 25*b.monsal
END MONSAL,
CASE
WHEN SUBSTR(a.perpai,3) < 201305 and b.codrub in ('FKE','FKJ')
THEN -25*b.monpat
WHEN SUBSTR(a.perpai,3) > 201305 and b.codrub in ('FKE','FKJ')
THEN 25*b.monpat
END MONPAT,
CASE
WHEN b.codrub ='FKB'
THEN - 25*b.monsal
ELSE 0
END AS KFB2
FROM zx37 a, zx8k b, zx0m d, zy00 c
WHERE a.nudoss=b.nudoss and a.nudoss=d.nudoss AND a.matric=c.matcle
AND a.typaie = 'F'
AND b.perpai = startstring
AND b.codrub in ('FKE','FKJ','FKB')
AND d.natcon not in ('SE','EP','E2')
AND a.matric =3002457
)
GROUP BY societe,etabli,matric,nudosp,identite
ORDER BY societe,etabli,matric,nudosp,identite;

voici les données à totaliser en table :

COD MONSAL MONPAT
--- ---------- ----------
FKB 690 0
FKE 0 -80

Voici mon résultat :

COLUMN_VALUE
--------------------------------------------------------------------------------
"=""100""";"=""100001 """;"=""3002457 """;5;nom prenom;2000;19250
"=""100""";Total = 100001 ;;;;2000;19250;1

La premiere somme à 2000 est bonne.
Dans la deuxieme je devrais retrouver 17250 au lieu des 19250 (19250 correspondant à la somme (690+ 80) *25).
j'ai l'impression que ma condition "WHEN b.codrub ='FKB'' n'est pas prise en compte.

Quelqu'un aurait une idée ?

Merci d'avance.

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    le requête fonctionne finalement correctement.
    je souhaiterai clôturer cette question mais je n'ai pas accès au "Résolu", si quelqu'un peut faire quelque chose merci d'avance.
    1. Merci pour le lien mais c'est justement le "marquer Résolu" qui n'apparaissait pas...et qui est la maintenant
      merci quand même.
    2. Modérateur
      Le lien ne peut apparaitre que si une réponse est donnée..
      cordialement.