Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2011, 12h42   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
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.
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 13h42   #2
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Bonjour

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

http://www.developpez.net/forums/d19...lonnes-lignes/
macben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 14h11   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
Merci, pour ce lien mais je n'arrive toujours pas....
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 14h24   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
Pour quelle version d'Oracle ?
Voilà une des divers solutions.
Code :
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>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 14h53   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
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.
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 14h56   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Si la finalité c'est Excel, faites le tableau croisé dynamique sous Excel.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 15h03   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
c juste une requete sql. pas d excel....

Vous n'avez pas une idée?
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 15h06   #8
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous vous contredisez alors :
Citation:
car j 'aurais besoin plus tard de les exporter sur un fichier excel.
Citation:
c juste une requete sql. pas d excel....
Faites une recherche sur le mot clef PIVOT.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 15h18   #9
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
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.
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 15h43   #10
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
Voilà String Aggregation Techniques. Prennez ce qui vous arrange.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 15h54   #11
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Il y a un nombre max de badgeage par jour ou non ?
macben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 10h22   #12
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
Merci, grâce à vous, j'ai trouver mon bonheur....J'ai trouvé ce que je voulais.

Un grand merci!!
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 10h24   #13
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Bonjour,

Peux-tu nous expliquer comment tu as fait ? Que cela serve à tous...
macben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 15h20   #14
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
pardon, je n'ai pas l'habitude.
Voici les méthodes que j'ai reussi a faire :

Methode 1 : (non triées)

Code :
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 :
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.
Jeunenoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h19.


 
 
 
 
Partenaires

Hébergement Web