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 :

if then else dans un select


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut if then else dans un select
    Salut à tous,

    j'utilise oracle 9i. J'ai une vue dans la quelle j'aimerai la somme des données d'une colonne contenant des chiffres, ensuite comparer dans quel intervall cette somme est situé et enfin lui attribuer des points. Le resultat final 2,4 ou 8 j'aimerai le sauvegarder dans une nouvelle vu "V_Resultat".

    Lorsque je fais ceci j'obtient toujours des fautes.

    select sum(V_Calcul.NbrePoints)*100/32 as MaxPoint from V_Calcul
    if 1<MaxPoint <35 then 2
    else if 36<MaxPoint <75 then 4
    else if 75<MaxPoint <100 then 8


    Pardon quelqu'un a-t-il une idee comment resoudre ce probleme?

    Merci d'avance pour votre aide
    Fiona

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Avec decode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> select decode(1, 2, 3, 4) from dual;
    DECODE(1,2,3,4)
    ---------------
                  4
    ou avec case when :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> select case when 1 = 2 then 3 else 4 end from dual;
    CASEWHEN1=2THEN3ELSE4END
    ------------------------
                           4

  3. #3
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    salut plaineR,

    je ne comprend pas ton code. Est-ce que je dois ajouter cela dans mon selct ou alors?
    Merci
    Fiona

    Citation Envoyé par plaineR Voir le message
    Avec decode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> select decode(1, 2, 3, 4) from dual;
    DECODE(1,2,3,4)
    ---------------
                  4
    ou avec case when :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> select case when 1 = 2 then 3 else 4 end from dual;
    CASEWHEN1=2THEN3ELSE4END
    ------------------------
                           4

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Salut,
    Citation Envoyé par Fiona08 Voir le message
    Lorsque je fais ceci j'obtient toujours des fautes.

    select sum(V_Calcul.NbrePoints)*100/32 as MaxPoint from V_Calcul
    if 1<MaxPoint <35 then 2
    else if 36<MaxPoint <75 then 4
    else if 75<MaxPoint <100 then 8
    Attention à bien définir tes intervalles de valeurs, là tu ne prends pas en compte les valeurs situées entre 35 et 36, ni la valeur 75.

    Et plaineR t'a donné des syntaxes qui devraient t'aider à gérer tes différents cas dans ta requête.
    Et si tu pouvais détailler un peu plus ce que tu as à la base, et ce que tu cherches à faire, on pourrait peut être t'aider un peu plus précisément. Je comprends pas bien pourquoi tu multiplies par 100 puis divise par 32...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut
    Plutot que décode, il y a CASE, qui est plus lisible.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    plaineR a d'ailleurs cité les deux.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut

  8. #8
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Merci à tous,

    je vais essyasser et vous tenir informé.

    Fiona08

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2012, 21h40
  2. [AC-2007] test if then else dans boucle for next
    Par markuus dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2011, 11h41
  3. condition if then else dans un select
    Par bringer dans le forum SQLite
    Réponses: 5
    Dernier message: 11/07/2009, 00h25
  4. IF THEN ELSE dans 1 requête
    Par patjaff dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/10/2008, 16h43
  5. fonction if/then/else dans une requete Access
    Par steve38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/12/2006, 17h09

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