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

Langage SQL Discussion :

Valeur intermédiaire par SQL


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Par défaut Valeur intermédiaire par SQL
    Bonjour
    je vous expose mon cas

    A chaque fois que ma garantie change je génère un enregistrement ce qui donne ceci :
    Au 31/01/2006 garantie 120 000€
    Au 31/03/2006 garantie 140 000€
    Au 30/04/2006 garantie 130 000€
    Au 30/05/2005 aucun enregistrement puisque pas de modification de garantie
    AU 31/06/2006 garantie 160 000€

    Comment à l'aide d'SQL je peux connaitre la valeur de ma garantie au 30/05/2006 ( ici elle correspondant bien évidement à celle du 30/04/2006 puisque entre le 30/04 et le 30/05 la garantie n'a pas variée, mais ce n'est pas toujours le cas).

    En général, comment puis-je avec SQl connaitre la valeur de ma garantie à la date du traitement(ici le 30/05/2006), sachant que je génére une ligne à chaque modification du montant de la garantie
    Merci de votre aide
    Serry99

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Salut,

    Via une sous-requête qui te ramènera le montant la plus récente et antérieur à ta date

    Voici un petit jeu d'essai très simplifié, j'ai géré les dates en VarChar2, au format YYYY/MM/DD pour éviter de surcharger avec des fonctions de conversions, parfois spécifiques aux SGBD employés (et donc pour me simplifier la vie ...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE Garantie
    (Gdate VARCHAR2 (10),
     GMontant NUMBER (10));
     
    INSERT INTO Garantie VALUES ('2006/01/31', 120000);
    INSERT INTO Garantie VALUES ('2006/03/31', 140000);
    INSERT INTO Garantie VALUES ('2006/04/30', 130000);
    INSERT INTO Garantie VALUES ('2006/06/31', 160000);
    COMMIT;
    La requête est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> SELECT Gdate, Gmontant
      2    FROM Garantie
      3   WHERE Gdate = (SELECT MAX(Gdate)
      4       FROM Garantie
      5      WHERE Gdate <= '2006/05/31');
     
    GDATE        GMONTANT
    ---------- ----------
    2006/04/30     130000
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/10/2010, 15h50
  2. Récupérer la valeur renvoyé par une requette SQL
    Par laguine666 dans le forum Bibliothèques tierces
    Réponses: 2
    Dernier message: 24/04/2009, 23h40
  3. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 16h42
  4. [HTML] Crée une valeur $_POST par l'intermédiaire d'un lien
    Par Nadd dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 21/04/2006, 11h53
  5. [SQL] Valeur retournée par une requête...
    Par Empty_body dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/01/2006, 23h13

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