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

  1. #1
    Membre du Club Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 55
    Points
    55
    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
    Points : 3 609
    Points
    3 609
    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
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  3. #3
    Membre du Club Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 55
    Points
    55
    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 éprouvé
    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
    Points : 965
    Points
    965
    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 averti
    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
    Points : 342
    Points
    342
    Par défaut
    Plutot que décode, il y a CASE, qui est plus lisible.

  6. #6
    Membre éprouvé
    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
    Points : 965
    Points
    965
    Par défaut
    plaineR a d'ailleurs cité les deux.

  7. #7
    Membre averti
    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
    Points : 342
    Points
    342
    Par défaut

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

    je vais essyasser et vous tenir informé.

    Fiona08

  9. #9
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    N'oublie surtout pas si ça marche comme tu veux.
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

+ 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