Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    novembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 25
    Points : 4
    Points
    4

    Par défaut Mettre une condition if dans une requete sql

    bonjour,
    je souhaiterais effectuer une requete qui me remonte un total mais qui peut être multiplié par 2 selon si le champ bonus est égale à 1 ou pas.
    comment dois je faire dans mon sql????

    Code :
    1
    2
    3
    4
    5
    SELECT ac.nom, ac.prenom, (w_af.fas + (12 * w_af.abo)) AS total, w_af.bonus
      FROM acteur ac, w_affaire w_af
      WHERE w_af.ident_acteur = ac.ident_acteur
       AND w_af.date_supp = '31/12/9999'
       AND w_af.eligible = 1;
    dans la requete c'est le champ total que je souhaite multiplier par 2 si bonus = 1 sinon laisser la valeur de total.

  2. #2
    Membre du Club
    Inscrit en
    janvier 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 117
    Points : 51
    Points
    51

    Par défaut

    Salut,

    Voici ce que je ferais :

    Code :
    1
    2
    3
    4
    5
    6
     
    SELECT ac.nom, ac.prenom, CASE WHEN w_af.bonus = 1 THEN 2 ELSE 1 END * (w_af.fas + (12 * w_af.abo)) AS total, w_af.bonus 
      FROM acteur ac, w_affaire w_af 
      WHERE w_af.ident_acteur = ac.ident_acteur 
       AND w_af.date_supp = '31/12/9999' 
       AND w_af.eligible = 1;

  3. #3
    McM
    McM est déconnecté
    Expert Confirmé Sénior
    Inscrit en
    juillet 2003
    Messages
    3 598
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 3 598
    Points : 4 529
    Points
    4 529

    Par défaut

    Le DECODE marche bien
    Code :
    1
    2
    3
    4
    5
    SELECT ac.nom, ac.prenom, decode(w_af.bonus,1, 2,1) * (w_af.fas + (12 * w_af.abo)) AS total, w_af.bonus 
      FROM acteur ac, w_affaire w_af 
      WHERE w_af.ident_acteur = ac.ident_acteur 
       AND w_af.date_supp = '31/12/9999' 
       AND w_af.eligible = 1;

  4. #4
    Invité(e)
    Invité(e)

    Par défaut Re: Mettre une condition if dans une requete sql

    Citation Envoyé par Sardonnen
    bonjour,
    je souhaiterais effectuer une requete qui me remonte un total mais qui peut être multiplié par 2 selon si le champ bonus est égale à 1 ou pas.
    comment dois je faire dans mon sql????

    Code :
    1
    2
    3
    4
    5
    SELECT ac.nom, ac.prenom, (w_af.fas + (12 * w_af.abo)) AS total, w_af.bonus
      FROM acteur ac, w_affaire w_af
      WHERE w_af.ident_acteur = ac.ident_acteur
       AND w_af.date_supp = '31/12/9999'
       AND w_af.eligible = 1;
    dans la requete c'est le champ total que je souhaite multiplier par 2 si bonus = 1 sinon laisser la valeur de total.
    essaye avec un decode :

    select ac.nom, ac.prenom, decode(w_af.bonus,1,(w_af.fas + (12 * w_af.abo))*2,(w_af.fas + (12 * w_af.abo)))
    from acteur ac, w_affaire w_af
    where w_af.ident_acteur = ac.ident_acteur
    and w_af.date_supp = '31/12/9999'
    and w_af.eligible = 1;[/

  5. #5
    Invité de passage
    Inscrit en
    novembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 25
    Points : 4
    Points
    4

    Par défaut

    super
    merci

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •