Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 07/02/2011, 13h20   #1
Invité régulier
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 28
Points : 7
Points : 7
Par défaut Réutilsation d'un CASE WHEN

Salut,

J'aimerais savoir si il est possible de ré-utiliser un champ calculé par un "CASE WHEN".
J'aimerais avoir un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

SELECT 

        CASE MONCHAMP WHEN  '01'
                        THEN 0
                ELSE 1
	END CHAMP_A

        CASE CHAMP_A  WHEN  0
                        THEN 10
                ELSE 100
        END CHAMP_B		
       
FROM  MATABLE
Si vous avez d'autres propositions , n'hésitez pas.
D'avance merci pour votre aide.
Karim93210 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h13   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
bonjour,

Pourrai-tu donner un exemple de résultat voulu avec ce que tu as en entré ?
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h46   #3
Invité régulier
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 28
Points : 7
Points : 7
Salut,

En sortie, j'aurais mon champ A et mon champ B, mon champ B étant calculé à partir de mon champ A.

Ce que je ne veux pas, c'est dupliquer le code de calcul pour le champ A pour calculer le champ B car mon code pour le calcul du champ A est déjà assez conséquent.
Karim93210 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h52   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
bah, dans tous les cas tu devras passer entièrement ton calcul du champ A puis refaire un test avec d'autre calcul sur le champ B.

Ne serai-t-il pas plus intéressant de dissocier directement tes 2 calculs ?

si tu reste sur ton idée de départ regarde cette structure (dépend de ta version d'os) :

Code :
1
2
3
4
5
6
7
 
WITH tmp_1 (champA) AS 
(SELECT case maValeur when 0 then 10 else 1 end AS champA
FROM MaTable)
 
SELECT champA, case champA when 10 then 100 else -1 end AS champB
FROM tmp_1;

Sinon donne nous des informations claires et précises sur ton cas actuelle (le vrai calcul de ton case), un jeu de donnée en entrée et ton résultat attendu.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 15h13   #5
Invité régulier
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 28
Points : 7
Points : 7
Punkoff,

Merci pour ton aide mais effectivement ta solution me convient tout à fait, je ne voulais pas avoir du code imbriqué à n'y rien comprendre.
L'utilisation du "WITH" va me simplifier les choses.
Merci beaucoup pour ton aide.
Karim93210 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 08h59.


 
 
 
 
Partenaires

Hébergement Web