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 29/02/2008, 10h02   #1
Membre du Club
 
Inscription : mai 2004
Messages : 183
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 183
Points : 66
Points : 66
Par défaut decode avec case

case when E1.even_typ_evt = 'V' and E2.even_typ_evt = 'A' then 'A1'
else E2.even_typ_evt end as TYPE_EVT,

en decode ?

comment fait t'on

merci
moulery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 11h28   #2
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Citation:
Envoyé par moulery Voir le message
case when E1.even_typ_evt = 'V' and E2.even_typ_evt = 'A' then 'A1'
else E2.even_typ_evt end as TYPE_EVT,

en decode ?

comment fait t'on

merci
Normalement Oracle cosidère dorénavant que la fonction DECODE est révolue ...
La solution serait de concaténer ou de faire des imbriquations

Code :
decode (e1.even_typ_evt || e2.even_typ_evt, 'VA', 'A1', e2.even_typ_evt)
ou
Code :
1
2
3
4
 
decode(e1.even_typ_evt,
  'V', decode(e2.even_typ_evt, 'A', 'A1', e2.even_typ_evt),
  e2.even_typ_evt)
Je vote pour CASE!
__________________
Consultant et formateur Oracle
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 11h32   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Citation:
Envoyé par Michel SALAIS Voir le message
Normalement Oracle cosidère dorénavant que la fonction DECODE est révolue ...
Ah bon ?

Citation:
La solution serait de concaténer ou de faire des imbriquations

Code :
decode (e1.even_typ_evt || e2.even_typ_evt, 'VA', 'A1', e2.even_typ_evt)
Attention aux concaténations de données : si e1.even_typ_evt ='VA' et e2.even_typ_evt est NULL, c'est incorrect.

La 2ème solution est correcte.
Citation:
Code :
1
2
3
decode(e1.even_typ_evt,
  'V', decode(e2.even_typ_evt, 'A', 'A1', e2.even_typ_evt),
  e2.even_typ_evt)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 11h37   #4
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Citation:
Envoyé par McM Voir le message
Ah bon ?
.
Bah oui, je l'ai déjà lu dans la documentation Oracle ...

Citation:
Envoyé par McM Voir le message
Attention aux concaténations de données : si e1.even_typ_evt ='VA' et e2.even_typ_evt est NULL, c'est incorrect.
Effectivement je suis parti de l'hypothèse que ceci ne peut pas arriver
__________________
Consultant et formateur Oracle
Michel SALAIS 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 08h18.


 
 
 
 
Partenaires

Hébergement Web