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

Langage SQL Discussion :

Comportement de CASE


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Points : 46
    Points
    46
    Par défaut Comportement de CASE
    Autre me renvoie tata et toto. Est-ce normal? Autre ne devrait-il pas rendre juste les autre cas non étudiés dans les case when (...??

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
      coalesce (
    (case when (T.TEMPS > 0 and V.CD = ‘xxx’) then ‘tata’ end), 
    (case when (T.TEMPS > 0 and V.CD = ‘yyy’) then ‘toto’ end),
    (case when (T.Temps > 0 and V.CD = 'aaa') then ‘titi’else 'Autre' end)
    )
    FROM
      T

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Ce n'est pas évident de comprendre quel est le problème ici...
    Pourrais-tu donner un exemple de données en entrées, de données en sortie attendues, et les résultats obtenus (et non souhaités) ?

    Par exemple, un CREATE TABLE + INSERT INTO + requête qui va avec ?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 978
    Points
    52 978
    Billets dans le blog
    6
    Par défaut
    Vous avez fait 3 CASE là ou il fallait en faire qu'un seul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
       CASE
          WHEN T.TEMPS > 0 AND V.CD = 'xxx' THEN 'tata'
          WHEN T.TEMPS > 0 AND V.CD = 'yyy' THEN 'toto'
          WHEN T.Temps > 0 AND V.CD = 'aaa' THEN 'titi'
             ELSE 'Autre'
       END
    FROM  T
    Apprenez le SQL. Mon bouquin, comme mon site web peuvent vous y aider :
    http://sqlpro.developpez.com/cours/sqlaz/select/#L7

    A +

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous avez fait 3 CASE là ou il fallait en faire qu'un seul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
       CASE
          WHEN T.TEMPS > 0 AND V.CD = 'xxx' THEN 'tata'
          WHEN T.TEMPS > 0 AND V.CD = 'yyy' THEN 'toto'
          WHEN T.Temps > 0 AND V.CD = 'aaa' THEN 'titi'
             ELSE 'Autre'
       END
    FROM  T
    Apprenez le SQL. Mon bouquin, comme mon site web peuvent vous y aider :
    http://sqlpro.developpez.com/cours/sqlaz/select/#L7

    A +


    Bonsoir,

    Merci pour vos réponses. Le tuto j'ai adoré... je continue à le lire.
    en fait dans la requête que j'ai écris. Le else renvois la négation de cette parenthèse case when (T.Temps > 0 AND V.CD = 'aaa') ==> donc :

    case when (T.Temps <= 0 AND V.CD = 'aaa' ou bien les autres valeurs de cette colonnes) (y compris 'aaa')

Discussions similaires

  1. Comportement d'une liste de cases à cocher
    Par john stedd dans le forum Débuter
    Réponses: 1
    Dernier message: 22/03/2012, 09h45
  2. [AC-2003] Module de classe pour changer le comportement de case à cocher
    Par Stef999 dans le forum IHM
    Réponses: 6
    Dernier message: 18/10/2011, 08h16
  3. [PHP 5.3] Différence de comportement switch/case et if/else
    Par ArKam dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2010, 14h31
  4. Réponses: 2
    Dernier message: 23/08/2007, 15h39
  5. CASE WHEN avec un comportement anormal
    Par damien.sans dans le forum Oracle
    Réponses: 5
    Dernier message: 23/08/2006, 10h03

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