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

Requêtes et SQL. Discussion :

Problème remplacement de CASE par IIF


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 57
    Points : 27
    Points
    27
    Par défaut Problème remplacement de CASE par IIF
    Bonjour,

    Besoin d'aide svp ,j'ai du mal à remplacer le case de la requête ci dessous par SUM IIF

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Select cod_typ_tick  as USAG
    CASE WHEN dur_reel_comm is null then 0  else dur_reel_comm END AS DUREE_EM  ,COUNT(*) as idnt_tick 
    CASE WHEN SUM(CASE WHEN USAG = '01' THEN DUREE_EM END) IS NULL THEN 0 ELSE SUM(CASE WHEN USAG = '01' THEN DUREE_EM END) END AS DUREE_EM, SUM(CASE WHEN USAG = '01' THEN IDNT_TICK END) AS NB_VX, SUM(IDNT_TICK) AS NB_TOT, 
    100 * ((SUM(CASE WHEN USAG = '01' THEN IDNT_TICK END)) +0.001) / ((SUM(IDNT_TICK)) +0.001) AS TX_VX
     
    Voici ce que j'écris : avec des message d'erreurs du genre  " erreur de synthaxe, operateur absent" et je tourne en rond
     
     select cod_typ_tick as USAG
    IIF( IsNull ([dur_reel_comm]) ,0,dur_reel_comm),count(*) as idnt_tick,
    IIF(sum( IIF(IsNull([coll.cod_typ_tick = '01'],0,IIF(Sum([coll.cod_typ_tick = '01'],dur_reel_comm))) as DUREE-EM,
      SUM(IIF([coll.cod_typ_tick]) = '01',idnt_tick) AS NB_VX,
    Sum([IDNT_TICK]) AS NB_TOT, 
    100* ((SUM(IIFIsNull([cod_typ_tick])  = '01',IDNT_TICK)) +0.001)/Sum(IDNT_TICK +0.001) AS TX_VX

    merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 815
    Points : 14 908
    Points
    14 908
    Par défaut
    bonjour,
    la fonction NZ() est utile lorsque qu'une valeur contient du nul (le 2ème paramètre de la fonction indique la valeur de remplacement)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CASE WHEN dur_reel_comm is null
        then 0
        else dur_reel_comm END AS DUREE_EM
    remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nz(dur_reel_comm,0) AS DUREE_EM
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CASE WHEN SUM(CASE WHEN USAG = '01' THEN DUREE_EM END) IS NULL 
        THEN 0
        ELSE SUM(CASE WHEN USAG = '01' THEN DUREE_EM END) END AS DUREE_EM
    remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(iif(USAG = '01',NZ(DUREE_EM,0),0)) AS DUREE_EM
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SUM(CASE WHEN USAG = '01' THEN IDNT_TICK END) AS NB_VX
    remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(iif(USAG = '01',NZ(IDNT_TICK,0),0)) AS NB_VX
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    100 * ((SUM(CASE WHEN USAG = '01' THEN IDNT_TICK END)) +0.001) / ((SUM(IDNT_TICK)) +0.001) AS TX_VX
    remplacer par :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    100 * sum(iif(USAG = '01',nz(IDNT_TICK,0),0)+0.001) / SUM(nz(IDNT_TICK,0) +0.001) AS TX_VX
    CASE WHEN c'est de la syntaxe SQL Oracle (entre autre)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    C 'est Top!
    Merci tee_grandbois!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    SQL serveur utilise également cette syntaxe {CASE WHEN}

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 815
    Points : 14 908
    Points
    14 908
    Par défaut
    salut dysorthographie,
    merci pour l'info, je n'ai cité que celui que j'ai pratiqué (entre autre)

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

Discussions similaires

  1. [MySQL] Problème avec checkbox - cases cochées par défaut avec formulaire
    Par kenjiendo dans le forum PHP & Base de données
    Réponses: 65
    Dernier message: 21/08/2011, 14h36
  2. [PHP 5.0] Problème remplacement frame par include
    Par GarnierFlorian dans le forum Langage
    Réponses: 9
    Dernier message: 19/07/2011, 08h47
  3. Réponses: 2
    Dernier message: 28/10/2010, 14h38
  4. Réponses: 6
    Dernier message: 16/04/2008, 10h06
  5. Réponses: 2
    Dernier message: 13/06/2007, 15h40

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