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

Développement SQL Server Discussion :

Problème avec des IFF


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Problème avec des IFF
    Bonjour,

    Voici une partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IIF(datediff(day, DHDEBUT, @datePonctuelle) >= 30,1,0) as est30JoursEtPlus,
    IIF(datediff(day, DHDEBUT, @datePonctuelle)>=45 and datediff(day, DHDEBUT, @datePonctuelle) < 60,1,0) as estDe45a60Jours,
    IIF(datediff(day, DHDEBUT, @datePonctuelle) >= 60,1,0) as est60JoursEtPlus,
    Normalement, si le délai est de 35 jours, je devrais avoir un 1 dans ma colonne est30joursEtPlus, si le délai est de 47 jours, je devrais avoir un 1 dans la colonne est30joursEtPlus et un autre 1 dans la colonne estDe45a60Jours et si le délais est de 75 jours, je devrais avoir un 1 dans la colonne est30joursEtPlus, un autre 1 dans la colonne estDe45a60Jours et un autre dans la colonne est60JoursEtPlus.

    Le hic est que pour les délais de 35 et 47 jours j'ai pas de problème, les un s'inscrivent dans les bonnes colonne mais lorsque j'arrive avec un délai de plus de 60 jours, j'ai un un dans la colonne du 30 jours et un autre dans la colonne du 60 jours mais j'ai un zéro dans la colonne entre 45 et 60 jours.

    Pouvez-vous m'aider à résoudre ce mystère ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    De quoi te plains-tu ? Tes formules font exactement ce que tu leur demandes.
    La seconde formule renvoie 1 si et seulement si la différence est entre 45 et 60. Donc si la différence vaut plus de 60, cette formule renvoie 0.
    C'est ce qui est mentionné dans le test, confirmé par le nom de colonne : estDe45a60Jours
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 420
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonjour,

    C'est normal ta ligne 2 est construite comme une recherche d'intervalle alors que les autres ne sont construites que comme une recherche par rapport à une borne inférieure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIF(datediff(day, DHDEBUT, @datePonctuelle)>=45 and datediff(day, DHDEBUT, @datePonctuelle) < 60,1,0)
    soit :

    1/ je vérifie que le délai est supérieur à 45 (datediff(day, DHDEBUT, @datePonctuelle)>=45)
    2/ et inférieur à 60 (datediff(day, DHDEBUT, @datePonctuelle) < 60,1,0)

    Donc je ne réponds 1 que lorsque le délai est compris entre 45 et 59 inclus.

    EDIT Grillé !

    Cordialement

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut plainte inutile
    Ok là je me sens pas fort. Je pense que mon cerveau est malade. Merci, je savais bien que la réponse était trop facile.

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

Discussions similaires

  1. Problème avec des transaction
    Par Oluha dans le forum ASP
    Réponses: 16
    Dernier message: 01/03/2005, 15h40
  2. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17
  3. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49
  5. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26

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