Bonjour,
je cherche à intégrer une colonne pour y obtenir un taux de change croisé entre 2 devises, càd EUR/USD, GBP/USD, CHF/GBP, ... sachant que les seuls taux de changes que j’ai dans la base sont vis-à-vis de l’EUR.
J'ai 3 bases au départ: Opération (o); Changes (ch) et Personne (p) avec les champs suivants:
Le taux change qui est alimenté par date par défaut dans la base change, est celui de l'EUR vers autres devises (ex: GBP vs EUR = 0,92). Pour le taux de change EUR/EUR, celui ci est de 1, mais à une seule date, celle du 01/01/1900 donc valeur vide pour toutes les autres dates. taux de change vide également si la date d'opération est supérieure à la dernière date de change connue (=> utilisation du max(chi.datvcc))o.datvop "date valeur opération",
o.devise "Code devise opération",
o.mtneto "montant net opération",
ch.datvcc "date valeur change",
ch.devise "Code devise",
ch.chatau "taux de change",
p.devban "code devise de la banque",
p.ibanbq "Nom du compte bancaire",
voici le code que j'ai écrit pour le calcul du taux de change:
mais il me met le message suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 SELECT decode(p.devban,o.devise,1, ((select decode(chbdi.chatau,'', (decode(o.devise,'EUR',1,(select chatau from changes where datvcc=(select max(chi.datvcc) from changes chi) and devise=o.devise))), chbdi.chatau) from changes chbdi where chbdi.devise=o.devise) /(select decode(chbdo.chatau,'', (decode(p.devban,'EUR',1,(select chatau from changes where datvcc=(select max(chi.datvcc) from changes chi) and devise=p.devban))), chbdo.chatau) from changes chbdo where chbdo.devise=p.devban))) as TxChangeBANDEP FROM OPERATION o, changes ch, PERSONNE p WHERE o.datvop = ch.datvcc(+) "il y a plusieurs enregistrements sur une date d'opération pour une seule par devise dans la table change" and o.devise=ch.devise(+) "idem"
Merci d'avance pour vos bons conseilsORA-01427: Sous-interrogation ramenant un enregistrement de plus d'une ligne
Laurent
PS: remarque importante, je travaille avec QlikView sur base Oracle
Partager