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/When/Then.. Select de plusieurs valeurs calculées


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut Case/When/Then.. Select de plusieurs valeurs calculées
    Bonjour,

    J'ai plusieurs calculs différents à faire selon si une donnée (largeur) est 0 ou autre.

    Dans mon cas j'utilise plusieurs fois de suite la clause "Case" mais je ne trouve pas cela très élégant. J'aimerai si possible regrouper tous mes calculs dans une seule clause "Case".
    Auriez-vous d'autres propositions plus élégantes svpl?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Case
        when att.LARG = '0' then att.DIAME
        else att.LARG
      end Lg_Dia,
     
      Case
         when att.LARG = '0' then (v.MULTIPLY_FACTOR*PDE.PDE_FINAL_QUANTITY_SU*1000)/(att.SECTION_VAL*att.PDS_SPECIF_VAL)
        else (v.MULTIPLY_FACTOR*PDE.PDE_FINAL_QUANTITY_SU*1000)/(att.LARG*att.EPAIS*att.PDS_SPECIF_VAL)
      End m,
     
    -- j'aimerai récupérer la valeur "m" dans le calcul si dessous, mais cela ne va pas pourquoi ?
      sum(m*att.LARG/1000) m2,
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 452
    Par défaut
    Bonjour,
    A ma connaissance tu ne peux pas "récupérer" une valeur calculée dans le SELECT pour une autre colonne du même SELECT.
    Il faut utiliser soit une CTE, sous une sous-requête.

    Tatayo.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    Il faut que tu mettes le résultat de ton CASE dans une sous-requête, tu pourras ainsi le référencer dans la requête principale comme s'il s'agissait d'une colonne.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut
    Bonjour et merci pour vos réponses rapides.

    Mais aïe aïe... une sous-requête normale j'arrive encore, mais avec une clause "Case" je n'y arrive pas. J'ai toujours une erreur

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Un case c'est comme une fonction, mais il se peut que certains vieux parseurs gèrent mal.
    Quelle est l'erreur ? Quelle est la requête ?

    Exemple de sous requête avec un case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a FROM (select case when dummy IS NOT NULL THEN 1 END a FROM DUAL)

Discussions similaires

  1. Clause SELECT dans un CASE WHEN THEN
    Par LudoV63 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 09/12/2019, 16h24
  2. SUM(CASE WHEN THEN 1 ELSE 0 END) SUR PLUSIEURS LIGNES
    Par Dr_No dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/11/2012, 14h35
  3. Select avec plusieurs valeurs
    Par NESTLE dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2010, 15h45
  4. Utilisation CASE WHEN avec une liste de valeurs
    Par mortimer.pw dans le forum PL/SQL
    Réponses: 5
    Dernier message: 26/03/2009, 12h50
  5. Equivalent "Select Case when then else end" sur Paradoxe
    Par Seuh.m dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/06/2006, 08h23

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