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

SQL Oracle Discussion :

CASE sur deux colonnes [11gR2]


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut CASE sur deux colonnes
    Bonjour,

    je souhaite appliquer un CASE dans un select , qui verifie la condition sur une colonne et applique le resultat sur une autre.
    exeple : une table A avec 2 colonnes x et y

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select x,y , case when x='toto' then y='tata' 
    end as ref
    et là message d'erreur : MIssing key world

    j'ai essayé aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select x,y , case x when 'toto' then y='tata' 
    end as ref
    meme message d'erreur .
    En réalité ma requeteest plus complexe avec des jointure ,
    mais sii quelqu'un peut me montrer un exemple , car sur le réseau , que des exemples classiques , condition / action sur une seule colonne.

    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    Je ne pense pas que dans le SELECT avec un CASE tu puisses affecter une chaîne de caractères à une colonne.
    En clair, la partie "then y='tata'" me semble impossible mais je peux me tromper.

    Quand tu dis "verifie la condition sur une colonne et applique le resultat sur une autre.", tu veux faire un Update de la colonne y et mettre 'tata' dedans quand x = 'toto'?

    Exemple sur dual : exemple simple : si dummy = X alors j'affiche Y.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select dummy, 
    case dummy WHEN 'X' then 'Y' END 
    from dual;
     
    D C
    - -
    X Y
    1 row selected.

    Cas que tu veux faire avec une affectation de colonne (la même) : ça plante --> avec le Case dans un SELECT, on peut afficher un libellé mais pas faire un Update de colonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select dummy, 
    case dummy WHEN 'X' then dummy='Y' END 
    from dual;
     
    ORA-00905: mot-clé absent

    Une solution serait plutôt ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update dual set dummy=  case WHEN dummy = 'X' then 'Y' END;
    Mais il ne serait pas plus simple de faire ça? Bien sur dans DUAL il y a une seule ligne mais cet Update est plus simple que de passer par un Case...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update dual set dummy='Y' WHERE dummy = 'X' ;
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut Re
    Merci du retour . Je ne veux pas faire de update, je veux conditionner l'affichage du SELECT; ne pas afficher la valeur de la colonne Y si la colonne X ='tata' par exemple .Avec le CASE , je n'y arrive pas.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select x, case when x='toto' then 'tata' else y end as y

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Merci à ts les deux .
    Specialement Skutaumad !! c'est exactement ce que je cherchais .
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select x, case when x='toto' then 'tata' else y end as y
    répond exactement à ma problèmatique; je l'embarque !

  6. #6
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    On peut l’écrire même d'une autre manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select x, case X when 'toto' then 'tata' else y end as y
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

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

Discussions similaires

  1. Flottant à cheval sur deux colonnes
    Par yobbas dans le forum Mise en forme
    Réponses: 2
    Dernier message: 29/09/2006, 17h02
  2. [XSLT] Mettre sur deux colonnes
    Par tiboel dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/07/2006, 15h38
  3. Afficher des enregistrements sur deux colonnes
    Par Dauphind dans le forum Access
    Réponses: 1
    Dernier message: 22/06/2006, 15h16
  4. [Tableaux] Array sur deux colonnes et foreach..
    Par shadeoner dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2006, 09h46
  5. [CR] Faire un groupe sur deux colonnes, voir mon exemple
    Par Etienne51 dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 08/10/2004, 15h02

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