IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

[A03] requète/renseignement données manquantes


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [A03] requète/renseignement données manquantes
    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)
    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;
    L'exemple suivant montre ce qui est réellement recherché:
    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,,

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut Christian78 et bienvenu,

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
       s1.date,
       s1.valeur AS s1,
       IIf(IsNull(s2.date), (select valeur from test2 where (date=(select max(date) from test2 where date<s1.date))), 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=(select max(date) from test1 where date<s2.date))), s1.valeur) AS s1,
       s2.valeur AS s2
    FROM test2 AS s2 LEFT JOIN test1 AS s1 ON s2.date = s1.date
    ORDER BY date


  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Merci !
    Non seulement la solution marche ... mais en plus elle est très élégante !!!


    merci et bonnes fêtes,

    Christian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [A03] requète/renseignement données manquantes
    Par Christian78 dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/11/2008, 12h14
  2. [SQL] Multiplication après requête qui donne plusieurs données en résultats
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/06/2007, 12h34
  3. [Requête]somme donne resultat anormal
    Par moicats dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/03/2007, 11h24
  4. Export d'une requête renseignée
    Par Simao dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/01/2007, 21h57
  5. Remplacement données manquantes
    Par HurtMarley dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/07/2006, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo