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

Oracle Discussion :

Recuperer plusieurs horaires pour une personne


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Recuperer plusieurs horaires pour une personne
    Bonjour,

    Je me permets de vous solliciter votre aide sur une table que je n'arrive pas a récupérer sur Oracle10.

    J'expose mon problème.

    J'ai une table BADGE avec comme champs :
    NUM DATEJOUR HEURE
    82 19/04/10 10,9833
    82 19/04/10 13,3167
    82 19/04/10 14,1
    82 19/04/10 18,2

    Comme vous pouvez apercevoir, la personne a pointé ses heures : 10h58,13h30, 14h01 et 18h08.

    Je voudrais faire une requete SQL en faisant des SELECT, et ca n'a pas marché. Ca fait 2 jours que je suis bloqué.

    Le but final est d 'obtenir en selectionnant les informations demandés, ceci dans une table :

    NUM DATEJOUR HEURE_P1 HEURE_P2 HEURE_P3 HEURE_P4 et ainsi de suite...

    82 19/04/2010 10,9833 13,3167 14,1 18,2

    Avez-vous une idée pour le faire?

    Je vous serais reconnaissant.

    Tout en vous remerciant par avance, je suis dispo.

  2. #2
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    Bonjour

    Il s'agit d'un pb courant, tu peux trouver des pistes ici :

    http://www.developpez.net/forums/d19...lonnes-lignes/

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci, pour ce lien mais je n'arrive toujours pas....

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Pour quelle version d'Oracle ?
    Voilà une des divers solutions.
    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
    20
    21
    22
    23
    24
     
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
     
    SQL> With Data As (
      2  Select 82 As Num,  To_Date('19/04/10','DD/MM/RR') DateJour, 10.9833 As Heure from dual union all
      3  Select 82, To_Date('19/04/10','DD/MM/RR'), 13.3167  from dual union all
      4  Select 82, To_Date('19/04/10','DD/MM/RR'), 14.1  from dual union all
      5  Select 82, To_Date('19/04/10','DD/MM/RR'), 18.2  from dual
      6  )
      7  Select num, datejour, Cast(collect(heure) as sys.odcinumberlist) tab_heure
      8    From Data
      9   Group By num, datejour
     10  /
     
           NUM DATEJOUR
    ---------- --------
    TAB_HEURE
    --------------------------------------------------------------------------------
            82 19/04/10
    ODCINUMBERLIST(10,9833, 13,3167, 14,1, 18,2)
     
     
    SQL>

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    j'utilise oracle developer.

    ce que je voudrais :

    NUM |DATEJOUR| HEURE_P1 |HEURE_P2| HEURE_P3| HEURE_P4| HEURE_5

    82 19/04/2010 10,9833 13,3167 14,1 18,2 NULL

    la solution ne fonctionne pas trop... car j 'aurais besoin plus tard de les exporter sur un fichier excel.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 391
    Points
    18 391
    Par défaut
    Si la finalité c'est Excel, faites le tableau croisé dynamique sous Excel.

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    c juste une requete sql. pas d excel....

    Vous n'avez pas une idée?

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 391
    Points
    18 391
    Par défaut
    Vous vous contredisez alors :
    car j 'aurais besoin plus tard de les exporter sur un fichier excel.
    c juste une requete sql. pas d excel....
    Faites une recherche sur le mot clef PIVOT.

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je suis franchement désolé.. Désolé pour mon noob attitude...

    Je dois utiliser sql avec oracle. la solution proposé par mniti était pas mal mais je voudrais heure_1 -> 1er colonne, heure_2 -> 2ieme colonne et ainsi de suite. Mon maitre voudrait que sur oracle.

    on m 'interdit d'utiliser Excel.

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Voilà String Aggregation Techniques. Prennez ce qui vous arrange.

  11. #11
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    Il y a un nombre max de badgeage par jour ou non ?

  12. #12
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci, grâce à vous, j'ai trouver mon bonheur....J'ai trouvé ce que je voulais.

    Un grand merci!!

  13. #13
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    Bonjour,

    Peux-tu nous expliquer comment tu as fait ? Que cela serve à tous...

  14. #14
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    pardon, je n'ai pas l'habitude.
    Voici les méthodes que j'ai reussi a faire :

    Methode 1 : (non triées)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num,datejour, wm_concat(heure)
    FROM   (Select * from BADGE ORDER by num,datejour, heure)
    GROUP BY num,datejour

    Methode 2 : (triées)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT num,datejour, 
           Max(DECODE(ORDRE, 1 ,heure, NULL)) heure1, 
           Max(DECODE(ORDRE, 2, heure, NULL)) heure2,
           Max(DECODE(ORDRE, 3, heure, NULL)) heure3,
           Max(DECODE(ORDRE, 4, heure, NULL)) heure4,
           Max(DECODE(ORDRE, 5, heure, NULL)) heure5,
           Max(DECODE(ORDRE, 6, heure, NULL)) heure6,
           Max(DECODE(ORDRE, 7, heure, NULL)) heure7,
           Max(DECODE(ORDRE, 8, heure, NULL)) heure8,
           Max(DECODE(ORDRE, 9, heure, NULL)) heure9
      FROM (SELECT ROW_NUMBER() OVER(Partition BY num,datejour ORDER BY num,datejour) ORDRE, num,datejour, heure FROM BADGE) 
      GROUP BY num,datejour
    Voilou.

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

Discussions similaires

  1. ajouter plusieurs lignes pour une personne
    Par frommage dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/11/2012, 04h18
  2. [AC-2007] formulaire pour une personne avec plusieurs entrées
    Par askobalt dans le forum IHM
    Réponses: 4
    Dernier message: 24/10/2012, 15h27
  3. [MySQL] insérer plusieurs adresses pour une seule personne
    Par dev_deb dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/08/2008, 13h20
  4. [C#] Plusieurs LinkButton pour une seule fonction
    Par FunnyDjo dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/06/2005, 22h01
  5. Réponses: 2
    Dernier message: 05/07/2004, 17h50

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