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 :

decode, jointure ou case


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut decode, jointure ou case
    Bonjour,

    J'expose mon problème. J'ai une table avec 3 champs : ch1 (commencant par S0 ou B0), ch2 et ch3.

    Je souhaite faire une query sql suivant cette logique:

    si ch1<= X and ch2 is null alors afficher ch3
    sinon si ch1>X and ch1 like 'B0%' alors afficher 3
    sinon rien

    J'hésite entre decode, faire des jointures ou case.

    Ci-joint deux exemples que j'ai commencé à écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select decode(ch1, (<='X' and ch2 is null), ch3, (>'X' and ch1 like 'B0%'), ch3, NULL)
    from table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select CASE
    when ch1 <='X' and ch2 is null then ch3
    when ch1 >'X' and ch1 like 'B0%' then ch3
    else null
    end qty
    from table
    Avez-vous une idée pour effectuer un sql correct?

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pourquoi envisager une jointure, vous n'avez qu'une table ?

    Testez la syntaxe de votre decode, vous verrez qu'il est faux.

    Dès lors, il ne reste plus qu'une solution (correcte) !
    CASE est un decode largement amélioré, autant l'utiliser.

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

Discussions similaires

  1. Update avec jointure et case
    Par bernards111 dans le forum Débuter
    Réponses: 2
    Dernier message: 02/02/2015, 16h21
  2. Jointure et case
    Par Agent_Nivek dans le forum DB2
    Réponses: 2
    Dernier message: 13/01/2011, 22h44
  3. équivalent fonction decode() If ou Case When
    Par schkrumble dans le forum Designer
    Réponses: 2
    Dernier message: 09/06/2009, 16h15
  4. [SQL server 2000] Problème de jointure avec 'Case'
    Par Tankian dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 17h42
  5. Script avec JOINTURE et CASE
    Par Labienus dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/02/2004, 09h40

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