Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 30/04/2008, 20h39   #1
Membre du Club
 
Homme
Développeur informatique
Inscription : décembre 2006
Messages : 104
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 104
Points : 49
Points : 49
Par défaut Mettre les résultats en colonne

Bonsoir,
j'ai deux tables, A et B

la table A
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
id_sn	id_snl	Statut	Date
1	1	S1	01/01/08
2	1	S2	02/01/08
3	1	S3	03/01/08
4	1	S4	04/01/08
5	2	S1	05/01/08
6	2	S2	06/01/08
7	2	S3	07/01/08
8	2	S4	08/01/08
9	3	S1	09/01/08
10	3	S2	10/01/08
11	3	S3	11/01/08
12	3	S4	12/01/08
13	4	S1	13/01/08
14	4	S2	14/01/08
15	4	S3	15/01/08
16	4	S4	16/01/08
17	5	S1	17/01/08
18	5	S2	18/01/08
19	5	S3	19/01/08
20	5	S4	20/01/08

table B


Code :
1
2
3
4
5
6
id_snl	Fiche
1	F1
2	F2
3	F3
4	F4
5	F5
ma requette:

Code :
1
2
3
4
SELECT  B.FICHE,A.STATUT,A.DATE
FROM A,B
WHERE A.id_snl=B.id_snl
AND A.Statut  IN ( S1,S3)
resultat:
Code :
1
2
3
4
5
6
7
8
9
10
11
FICHE	STATUT	DATE
F1	S1	01/01/08
F1	S3	03/01/08
F2	S1	05/01/08
F2	S3	07/01/08
F3	S1	09/01/08
F3	S3	11/01/08
F4	S1	13/01/08
F4	S3	15/01/08
F5	S1	17/01/08
F5	S3	19/01/08
moi je veux les memes resultat, mais en colonne date des deux statut par fiche:
Code :
1
2
3
4
5
6
FICHE	S_1	D_1	S_3	D_3
F1	S1	01/01/08	S3	03/01/08
F2	S1	05/01/08	S3	07/01/08
F3	S1	09/01/08	S3	11/01/08
F4	S1	13/01/08	S3	15/01/08
F5	S1	17/01/08	S3	19/01/08
Merci pour votre aide
webfranc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 17h29   #2
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
la version
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 17h54   #3
Membre du Club
 
Homme
Développeur informatique
Inscription : décembre 2006
Messages : 104
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 104
Points : 49
Points : 49
Version: Oracle 10i
webfranc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 18h00   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
ok, donc pas de pivot. fais quand meme une recherche sur ce site sur pivot pour des alternatives.

style

select c1, max(decode(c2,'x',c2)) x...

ou

select c1, (select c2 from t where c1='x'...
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 20h18   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 113
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 113
Points : 32
Points : 32
Bonjour,

J'ai déja travaillé avec des pivots et le lien suivant va t'aider à l'exploiter dans ton exemple:
http://jplamontre.free.fr/AS400/SqlPivotTable.htm

Bonne chance
fatati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2008, 11h20   #6
Membre du Club
 
Homme
Développeur informatique
Inscription : décembre 2006
Messages : 104
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 104
Points : 49
Points : 49
merci fatati, c 'est exactement ce que je cherche
webfranc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 10h31   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Essaye ça sinon :
Code :
1
2
3
4
5
6
7
8
9
10
11
WITH all_data AS
(
SELECT  B.FICHE,A.STATUT,A.DATE
FROM A,B
WHERE A.id_snl=B.id_snl
AND A.Statut  IN ( S1,S3)
)
SELECT tab_s1.fiche, tab_s1.statut S1, tab_s1.DATE D1, tab_s3.statut S3, tab_s3.DATE D3, 
  FROM (SELECT * FROM all_data WHERE A.Statut = 'S1') tab_s1
         INNER JOIN (SELECT * FROM all_data WHERE A.Statut = 'S3') tab_s2 ON tab_s1.FICHE=tab_s2.FICHE 
ORDER BY 1;
Le WITH permettant souvent d'améliorer les perfs
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 11h42   #8
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Le WITH sert à "matérialiser" une sous-requête le temps de ta requête maître. Autrement dit si tu as plusieurs références à une même sous-requête Oracle ne l'effectuera qu'une seule fois et mutualisera le résultat à toute ta requête.

C'est très utile lors des requêtes récursives. Cherche dans la documentation SUBQUERY FACTORING pour plus d'informations (documentation SQL REFERENCE/SELECT).
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 14h21   #9
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Citation:
Envoyé par philcero Voir le message
Le WITH sert à "matérialiser" une sous-requête le temps de ta requête maître....
C'est très utile lors des requêtes récursives
Un exemple ?

Oracle employe CONNECT BY et non WITH pour les requêtes récursives

http://www.ibm.com/developerworks/db...steinbach.html
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 15h10   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
je pense qu'il parle d'usage répété des données d'un même ensemble
Voila un exemple idiot : http://www.developpez.net/forums/sho...76&postcount=3

PS : pas mal l'exemple de CONNECT BY
orafrance 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 00h12.


 
 
 
 
Partenaires

Hébergement Web