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 03/10/2011, 10h02   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 1
Points : 0
Points : 0
Par défaut Requête CASE avec SELECT imbriqué

Bonjour,

Je souhaite faire une requête en testant la valeur d'un champ et, si la zone est vide alors je souhaite récupérer une valeur via une requete.
Est ce possible dans un CASE ?
exemple :

Code :
1
2
3
4
5
6
7
8
9
SELECT case 
when a.Famille = ' ' 
       THEN (
        SELECT max(b.Famille) FROM  P_STAT_TRSTP b
         WHERE a.NO_DOCUMENT = b.NO_DOCUMENT
                )
else a.Famille
END  test1
 FROM P_STAT_TRSTP a , P_STAT_TRSTP b
Merci de votre aide.
PP
pperrin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 10h13   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
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 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Difficile de donner une réponse correcte avec si peu de détail, mais est-ce que ceci ne vous conviendrait pas ?
Code :
1
2
3
4
5
6
7
8
SELECT max(case a.famille
             when ' '
             then b.famille
             else a.famille
           end) AS famille
  FROM P_STAT_TRSTP a
       INNER JOIN P_STAT_TRSTP b
         ON b.NO_DOCUMENT = a.NO_DOCUMENT;
__________________
Email : http://scr.im/waldar
Waldar est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/10/2011, 11h18   #3
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
il y a une différence entre les deux requêtes ;
pperrin; une sous-requête dans un CASE est possible à condition qu'elle reçoive une et une seule valeur.
pour cela; voici ta requête

Code :
1
2
3
4
5
6
7
8
SELECT case a.Famille
when  ' '  THEN (SELECT max(b.Famille)
FROM P_STAT_TRSTP b
WHERE a.NO_DOCUMENT = b.NO_DOCUMENT
)
else a.Famille
END  AS test1
FROM P_STAT_TRSTP a



sinon tu peux utiliser même decode


Code :
1
2
3
4
5
6
7
SELECT decode(a.Famille,' ', (SELECT max(b.Famille) 
                                                   FROM P_STAT_TRSTP b
                                                 WHERE a.NO_DOCUMENT=b.NO_DOCUMENT
                                                  )
, a.Famille
END  AS test1
FROM P_STAT_TRSTP a
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h10.


 
 
 
 
Partenaires

Hébergement Web