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 :

afficher tous les jours d'une année


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 115
    Par défaut afficher tous les jours d'une année
    Salut à tous,

    je suis un new commer sous oracle. J'aurai une petite question: Comment pourrait-on faire afficher tous les jours d'une année donnée sous oracle, rien qu'en utilisant du SQL?
    Par exemple pour 2008:
    01-01-08
    02-01-08
    ....
    31-12-08

    Merci d'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    L'idée c'est d'avoir une table calendrier, mais tu peux adapter cette requête pour la générer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select to_date('01/01/2008','dd/mm/yyyy') + (level-1) as jour
    from dual
    connect by level<367

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 115
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    L'idée c'est d'avoir une table calendrier, mais tu peux adapter cette requête pour la générer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select to_date('01/01/2008','dd/mm/yyyy') + (level-1) as jour
    from dual
    connect by level<367
    Super ton idee, mais serait-il possible de resoudre le truc sans toutefois utiliser le "connect by"?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    En utilisant une fonction pipelined :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE OR REPLACE TYPE numtab_type IS TABLE OF NUMBER;
    /
     
    CREATE or replace FUNCTION rowgen(pin_nor IN NUMBER)
    RETURN numtab_type DETERMINISTIC PIPELINED
    AS
    BEGIN
      FOR i IN 1..pin_nor
      LOOP
        PIPE ROW(i);
      END LOOP;
     
      RETURN;
    END rowgen;
    /
     
    SELECT to_date('01/01/2008','dd/mm/yyyy') + ROWNUM -1 as jour
    FROM TABLE(rowgen(366))
    /

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 115
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    En utilisant une fonction pipelined :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE OR REPLACE TYPE numtab_type IS TABLE OF NUMBER;
    /
     
    CREATE or replace FUNCTION rowgen(pin_nor IN NUMBER)
    RETURN numtab_type DETERMINISTIC PIPELINED
    AS
    BEGIN
      FOR i IN 1..pin_nor
      LOOP
        PIPE ROW(i);
      END LOOP;
     
      RETURN;
    END rowgen;
    /
     
    SELECT to_date('01/01/2008','dd/mm/yyyy') + ROWNUM -1 as jour
    FROM TABLE(rowgen(366))
    /
    comme je le disais plus hautm la PL/SQL aussi n'etait pas permis
    Encore merci pour tes propositions

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    C'est quoi ta problématique? C'est scolaire ?
    Le connect by c'est du pur SQL, sinon regarde le lien de mon autre post il y a aussi GROUP BY CUBE.
    Par contre sur oracle la CTE (with) n'est pas (encore) récursive donc pas de génération de lignes possible.

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

Discussions similaires

  1. Ajouter tous les jours d'une année dans une table?
    Par jacko842 dans le forum VB.NET
    Réponses: 4
    Dernier message: 27/04/2010, 16h36
  2. Lister tous les jours d'une année
    Par Delphi-ne dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/02/2007, 18h10
  3. Afficher tous les enregistrements d'une table
    Par bertrand_declerck dans le forum QuickReport
    Réponses: 2
    Dernier message: 08/07/2005, 08h35
  4. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  5. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11

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