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

MS SQL Server Discussion :

problème avec iif


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut problème avec iif
    bonjour

    j'arrive pas a exécuter cette requete sous sql server :

    select DateEnr,M, iif(DATEPART(hour,HeureEnr) > 4,1,0) as test
    from QteReel

    erreur : incorrect syntax near '>'

    ???? merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    select DateEnr,M, iif(DATEPART(hour,HeureEnr) > 4,1,0) as test
    from QteReel
    donne sous sql serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select DateEnr,M, 
    case 
    when DATEPART(hour,HeureEnr) > 4 then 1
    else 0
    end as test
    from QteReel
    Errare humanum est, perseverare diabolicum (Sénèque)

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Normal : iif n'existe pas dans le langage SQL et par conséquent ne se trouve pas dans SQL Server. Il s'agit d'un "truc" spécifique à Access et une cochonerie équivalente ! ;-)

    Dans le langage SQL qui est une norme, il y a le CASE pour répondre à ce genre de problématique. Lisez ce que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/sqlaz/select/#L7

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut
    merci, par contre si je rajoute
    select DateEnr,M, sum(iif(DATEPART(hour,HeureEnr) > 4,1,0))as test
    from QteReel
    group by DateEnr

    ??

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    le iff n'existe pas !!!!!!!!!!!!!!!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT DateEnr,M, 
    SUM(case 
    when DATEPART(hour,HeureEnr) > 4 then 1
    else 0
    end) AS test
    FROM QteReel
    group by DateEnr,M
    Errare humanum est, perseverare diabolicum (Sénèque)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut
    je sais cetait juste pour te rappeler la requete, j'ai bien saisi merci

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut
    j'ai toujours un problème

    SELECT DateEnr, M,
    Sum(case
    when (DATEPART(hour,DateEnr) > 4 AND DATEPART(hour,DateEnr) < 10) then 1
    else 0
    end) AS test
    FROM QteReel
    GROUP BY DateEnr, M
    HAVING (((QteReel.M)='609'));

    la reponse est :

    DateEnr M test
    .... 609 0
    .... 609 1
    .... 609 0
    .... 609 1
    .... 609 1
    .... 609 1
    .... 609 0
    .... 609 0
    ....

    il ne me fait pas la somme !!

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut
    chui bete c bon merci

  9. #9
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    mets la balise résolu
    Errare humanum est, perseverare diabolicum (Sénèque)

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut
    comment je peux convertir une chaine de caracteres en date sous sql server ?
    merci

  11. #11
    Membre habitué Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Points : 140
    Points
    140
    Par défaut
    Alors pour convertir une chaine de caractère de la forme JJ/MM/AAAA tu peux faire la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    select cast('01/12/2007 15:25:12' as datetime)
     
    Résultat 
     
    01/12/2007 15:25:12
    La connaissance n'est rien sans celles des autres !!!

  12. #12
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 277
    Points : 26
    Points
    26
    Par défaut
    super ca marche merci

Discussions similaires

  1. Problème avec fonction iif
    Par djelloharmel dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 06/02/2012, 15h50
  2. [CR XI] Problème avec IIF
    Par tornade69 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 31/03/2009, 00h59
  3. Problème avec le IIf
    Par BenoitM dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/02/2008, 23h32
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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