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 ;
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
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 ) )
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 ) ) )
=if(
isnull(only(total<%DIVI,[Code devise]> if(DateValidité_Devise=DATE_REF,true()))),
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]) ) )
ONLY(AGGR(
IF(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