Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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/10/2011, 10h20   #1
Membre chevronné
 
Inscription : novembre 2007
Messages : 1 154
Détails du profil
Informations personnelles :
Âge : 50

Informations forums :
Inscription : novembre 2007
Messages : 1 154
Points : 659
Points : 659
Envoyer un message via ICQ à Papy214
Par défaut problème sur un CASE

Bonjour,

J'ai un petit problème sur un CASE que je ne comprends pas.
Une table contient une colonne etat de type varchar(1) qui contient une valeur nulle par défaut.
Sinon, sa valeur peut être 'w', 'x', ou 'c'.

Je veux obtenir une liste du total de chaque etat. Pour ça, dans ma requête, je fais:

Code :
1
2
3
4
	   SUM(CASE etat 
			 WHEN NULL THEN 1 
			 ELSE 0 
		   END),
ça me renvoie 0.

Je suis obligé de faire la chose suivante pour obtenir un résultat correct:

Code :
1
2
3
4
	   SUM(CASE Coalesce(etat, 'a') 
			 WHEN 'a' THEN 1 
			 ELSE 0 
		   END) [Non vus],
Et franchement, je ne vois pas pourquoi.

Une idée svp ?

Papy !
Papy214 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 10h45   #2
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 352
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 352
Points : 9 745
Points : 9 745
Oui, si etat est NULL, il n'entre pas dans les tests du CASE et passe au ELSE direct.

C'est un comportement standard.

donc, faire plutot :

Code :
1
2
3
4
5
 
SUM(CASE  
	WHEN etat IS NULL THEN 1 
	 ELSE 0 
   END),
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 11h11   #3
Membre chevronné
 
Inscription : novembre 2007
Messages : 1 154
Détails du profil
Informations personnelles :
Âge : 50

Informations forums :
Inscription : novembre 2007
Messages : 1 154
Points : 659
Points : 659
Envoyer un message via ICQ à Papy214
Là, je dis "Monsieur ...'

Chapeau et un grand merci
Papy214 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 07h31.


 
 
 
 
Partenaires

Hébergement Web