Bonjour,
J'ai une table historiques qui comporte les champs suivants:
- Date
- Devise1
- Devise2
- Valeur
Je voudrais sélectionner les historiques selon un couple de devises.
Si la valeur du couple de devises n'existe pas, alors j'aimerais faire une division par deux autres couples de devises en cherchant une devise 'pivot'.
Par exemple :
Ma table contient tous les historiques
Je peux donc sélectionner les valeurs pour EUR/USD.Date_V|Devise1|Devise2|Valeur
2008-05-01|EUR|USD|1.5000
2008-05-01|EUR|JPY|100
2008-05-01|EUR|CAD|2
En revanche, il faut que je divise la valeur de EUR/CAD par EUR/USD pour obtenir USD/CAD (l'EUR etant ma devise pivot).
Il faudrait que ma requete fasse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT Date_V, @d1:='USD', @d2:='CAD', @d3:='EUR', IF( @val:=(SELECT valeur FROM historiques h1 WHERE Devise1=@d1 AND Devise2=@d2 AND h1.Date_V=h.Date_V), @val, ((SELECT valeur FROM historiques h2 WHERE Devise1=@d3 AND Devise2=@d2 AND h2.Date_V=h.Date_V))/((SELECT valeur FROM historiques h3 WHERE Devise1=@d3 AND Devise2=@d1 AND h3.Date_V=h.Date_V)) ) as valeur FROM historiques WHERE Date_V='2008-05-01' GROUP BY Date_V
Le probleme est que cela n'est pas fait correctement.
Savez-vous comment je peux optimiser ma requete pour qu'il trouve automatiquement "@d3" et calcule la valeur ?
Merci infiniment pour vos réponses !
A bientot !
Partager