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

SQL Oracle Discussion :

Comment afficher un champ par date dans un intervalle


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 100
    Points : 60
    Points
    60
    Par défaut Comment afficher un champ par date dans un intervalle
    Bonjour,

    je m'interesse au besoin suivant:
    etant donné une table TABLE1 ou j'ai deux champs:
    - Date_creation
    - VALEUR

    je m'intéresse a élaborer une procédure qui me permet d'afficher pour un intervalle de date donné en entré [date_deb, date_fin], le couple (date , valeur) présent dans la table.bien sur si la date n'existe pas dans la table afficher 0 tout simpelment comme valeur.

    excusez moi si ca parait trivial pour la plupart de vous

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    fais une recherche sur le forum sur BETWEEN

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 100
    Points : 60
    Points
    60
    Par défaut
    je sais qu'il faut utiliser le beetween mais comment mettre en place la bonne boucle qui fera le traitement pour chaque jour?
    merci

  4. #4
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 100
    Points : 60
    Points
    60
    Par défaut
    finalement je crois que between n'a rien a voir dans ce que je veux faire !
    il s'agit de boucler sur un intervale de date c'est tout, donc ce qui me manque c'est la façon de le faire
    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas ce que tu cherches à faire.
    Un exemple pourrait être plus explicite.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Un exemple pour la période du 1/3/2008 et 30/3/2008
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with t as
    (
      select date'2008-3-1' + level - 1 date_op
      from dual
      connect by date'2008-3-1' + level - 1 <= date '2008-3-30'
    )
    select t.date_op, t1.valeur
    from table1 t1, t
    where t1.date_creation  (+)= t.date_op
    J'ai édité parce que je me suis aperçu que j'ai placé le (+) du mauvais côté ...

  7. #7
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 100
    Points : 60
    Points
    60
    Par défaut
    OUH LA !
    c'est pas trop compliqué tout ca pr rapport a ce que je cherche :
    en effet je reexplique: la procedure doit prendre en parametre un date debut et une date date fin, et pour chaque jour ( date) afficher le couple en question c'est tout !

    je ne comprends pas le passage par la table dual?
    merci

  8. #8
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 100
    Points : 60
    Points
    60
    Par défaut
    pour faire simple voiçi la requete qui peut me retourner ce que je veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    select  DATE_CREATION_DATE , valeur   from table1 where 
    DATE_CREATION_DATE between '01-SEP-2000' and '29-FEB-2008' group by DATE_CREATION_DATE ;
    maintenanat il s'agit d'en creer une procedure qui prend les deux dates ( debut et fin) et m'affiche en retour pour chaque date le couple ( date , valeur) :

    exp:
    -----

    10/10/2007 15
    29/12/2005 2
    etc



    voila!

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Il faut décider ce que tu veux!

    Le besoin était d'afficher tous les jours de la période donnée. Rien ne garantie que tous ces jours sont dans la table table1! D'ailleurs vous avez dit que si ça n'existe pas vous voulez 0.
    Ma requête renvoi NULL mais c'est un petit détail.

    La table "t" permet d'avoir tous les jours de la période donnée ...

  10. #10
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 100
    Points : 60
    Points
    60
    Par défaut
    Oui mais comment ecrire ca sous forme d'une procedure qui affiche le couple de données ? comme ca elle sera paramétrable
    merci

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Alors pour ça il faut savoir écire une procédure PL/SQL qui utilise une requête !

    J'ai fourni la requête et c'était peut-être le plus dûr

    Vos paramètres seront comme ça dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH t AS
    (
      SELECT date_deb + level - 1 date_op
      FROM dual
      connect BY date_deb + level - 1 <= date_fin
    )
    SELECT t.date_op, t1.valeur
    FROM table1 t1, t
    WHERE t1.date_creation (+) = t.date_op
    Correction pour mettre le signe (+) du bon côté ...

  12. #12
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Attention! l'encapsulation dans une procédure n'affichera plus rien à moins de sortir les infos à l'écran avec DBMS_OUTPUT. De plus, elle ne sera plus directement utilisable sous SQL.

  13. #13
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ha moins d'utiliser les REFCURSOR

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Apparemment nous ne sommes pas sur la même longueur d'onde!

    Quel est le besoin fonctionnel?

    As-tu au moins essayé la requête pour comprendre ce qu'elle fait?

    Sais-tu écrire une procédure qui utilise une requête SQL quelconque? Sinon, il est temps d'inverstir sur PL/SQL!

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/10/2010, 14h48
  2. afficher le premier element par date dans un group by
    Par pmithrandir dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/01/2010, 16h56
  3. comment afficher les données par mois à partir d'un champs date ?
    Par M.a.n.u. dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/05/2008, 10h36
  4. Réponses: 1
    Dernier message: 05/04/2008, 18h57
  5. Comment afficher deux champs d'une table dans une comboBox
    Par lamia2007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/04/2007, 09h17

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