Bonjour à tous,
j'ai une base sur access 2003 composée de séries temporelles (dates, valeurs).
Les deux tables test1 et test2 reproduisent des données de cours d'actions qui ne sont pas forcément cotées le même jour, car elles sont traitées sur des marchés différents.
Je souhaite faire le travail suivant d'extraction suivant (éventuellement sous VBA):
extraire les séries temporelles relatives à deux actions et compléter dans chaque série les dates et valeurs qui manquent par la date manquante associée à la valeur du dernier jour de cotation (et pas juste le cours du jour d’avant, qui peut être fermé car dimanche, samedi ou pas coté).
Jusqu’à maintenant la requête utilisée (ci-dessous) ne permet pas de bien récupérer le dernier cours coté (car il prend date-1)
L'exemple suivant montre ce qui est réellement recherché:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT s1.date, s1.valeur AS s1, IIf(IsNull([s2].[Date]),(SELECT valeur FROM test2 WHERE date=(s1.[date] - 1)),[s2].[valeur]) AS s2 FROM test1 AS s1 LEFT JOIN test2 AS s2 ON s1.date = s2.date UNION SELECT s2.date, IIf(IsNull([s1].[date]),(SELECT valeur FROM test1 WHERE Date=(s2.[date] - 1)),[s1].[valeur]) AS s1, s2.valeur AS s2 FROM test2 AS s2 LEFT JOIN test1 AS s1 ON s2.date = s1.date;
série 1
01/12/2008 100 (Lundi)
03/12/2008 101 (Mercredi)
04/12/2008 102 (Jeudi)
08/12/2008 105 (Lundi)
série 2
01/12/2008 1000
02/12/2008 990
03/12/2008 980
05/12/2008 970
Extraction
Date Série1 Série2
01/12/2008 100 1000
02/12/2008 100 990
03/12/2008 101 980
04/12/2008 102 980
05/12/2008 102 970
08/12/2008 105 970
Avez vous une solution pour réaliser ce type d'extraction?
Merci à tous,,
Partager