IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

problème sur un CASE


Sujet :

Développement SQL Server

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Là, je dis "Monsieur ...'

    Chapeau et un grand merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème sur la fonction SELECT CASE
    Par ValerieH34 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/05/2015, 16h30
  2. Problème sur la fonction SELECT CASE (bis)
    Par ValerieH34 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/05/2015, 13h32
  3. Problème sur la fonction SELECT CASE
    Par ValerieH34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2015, 10h47
  4. Problème sur Select Case When
    Par parilla77 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 06/04/2012, 16h11
  5. Problèmes sur un use case avec ou exclusif
    Par Exentius dans le forum Cas d'utilisation
    Réponses: 4
    Dernier message: 22/11/2010, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo