Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
j'ai une table que je charge avec ce srcipt:
devises:
LOAD
CUDIVI as %DIVI,
CUCUCD as Code_devise,
date#(CUCUTD,'YYYYMMDD') as DateValidité_Devise,
CUARAT as Taux_devise
FROM CCURRA.QVD (qvd)
WHERE
CUCRTP=4
;
Il y en gros ces données là dedans:
Select '1Z0', 'USD', '2015-01-01 00:00:00.000', 1.30
UNION ALL Select '1Z0', 'USD', '2015-02-01 00:00:00.000', 1.20
UNION ALL Select '1Z0', 'USD', '2015-03-01 00:00:00.000', 1.10
UNION ALL Select '1Z0', 'USD', '2015-04-01 00:00:00.000', 1.00
UNION ALL Select '1Z0', 'GBP', '2015-01-01 00:00:00.000', 0.9
UNION ALL Select '1Z0', 'GBP', '2015-03-01 00:00:00.000', 0.95
UNION ALL Select 'AAA', 'USD', '2015-01-01 00:00:00.000', 1.00
Donc:
- un identifiant %DIVI
- un code devise Code_devise
- une date de début DateValidité_Devise
- un taux Taux_devise
Je cherche à obtenir pour une date donnée le taux à appliquer pour un identifiant et un code devise .
Pour une date donnée "DATE_REF" j'arrive à trouver la date du taux à appliquer via cette expression:
MAX (total<%DIVI,[Code devise]>
if(
DateValidité_Devise<DATE_REF,DateValidité_Devise
)
)
J'aimerais donc filtrer uniquement les lignes les lignes ayant DateValidité_Devise = à ce MAX.
J'ai tenté les expressions suivantes:
Pour la date de validité
=if(
isnull(only(total<%DIVI,[Code devise]> if(DateValidité_Devise=DATE_REF,true()))),
MAX (total<%DIVI,[Code devise]>
if(
DateValidité_Devise<DATE_REF,DateValidité_Devise
)
)
)
Pour le taux
=if(
isnull(only(total<%DIVI,[Code devise]> if(DateValidité_Devise=DATE_REF,true()))),
ONLY(AGGR(
IF(DateValidité_Devise=
MAX (total<%DIVI,[Code devise]>
if(
DateValidité_Devise<DATE_REF,DateValidité_Devise
)
)
,[Taux devise]
)
,DateValidité_Devise,%DIVI,[Code devise])
)
)
Ca fonctionne sauf quand la date DATE_REF est égale à la date de début d'une période.
Je n'ai rien qui apparaît dans les 2 expressions à ce moment là
Merci,
Willy