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

Langage SQL Discussion :

Bug Clause Where Case SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 34
    Par défaut Bug Clause Where Case SQL
    Bonjour,

    J'ai un probleme de clause WHERE avec CASE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    FROM Table_Inter INNER JOIN Table_Reclam 
    ON Table_Inter.INDICE = Table_Reclam.INDICE
    WHERE
    Retour_Presta = 'oui' AND (CAST(Table_Inter.DATE_REA AS DATETIME) >= @Date_Debut) AND (CAST(Table_Inter.DATE_REA AS DATETIME) <= @Date_Fin) AND
    CASE (SELECT lblcontrat FROM Table_Inter where NumFiche=@num_fiche )
    WHEN 'Robinetterie' THEN
    (ABS(DATEDIFF(day,(CAST(Table_Inter.DATEPREVU AS DATETIME)), (CAST(Table_Inter.DATE_REA AS DATETIME)))) <= 2) -- 48H
    ELSE
    (ABS(DATEDIFF(day,(CAST(Table_Inter.DATE_APL AS DATETIME)), (CAST(Table_Inter.DATE_REA AS DATETIME)))) <= 1) -- 24H
    Mais il me mets comme erreur
    Msg 170, Niveau 15, État 1, Procédure GET_LISTE_INTERVENTION_DANS_DELAI, Ligne 159
    Ligne 159 : syntaxe incorrecte vers '<'.
    C'est la premiere clause Then du CASE....

    Quelqu'un peut m'aider SVP....

    Merci

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Après ton fameux THEN, la valeur que tu exprime est un prédicat :
    (TonTruc <= 2)

    Qu'essaie tu de renvoyer ?
    Un booléen ? Si tel est le cas, est-ce qu'un tel type existe ?

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 34
    Par défaut bug
    ok en fait je veux que ma clause where soit differente en fonction du resultat de lblcontrat:
    si lblcontrat = Robinetterie alors ma clause est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Retour_Presta = 'oui' 
    AND (CAST(Table_Inter.DATE_REA AS DATETIME) >= @Date_Debut) 
    AND (CAST(Table_Inter.DATE_REA AS DATETIME) <= @Date_Fin) 
    AND (ABS(DATEDIFF(day,(CAST(Table_Inter.DATEPREVU AS DATETIME))
    , (CAST(Table_Inter.DATE_REA AS DATETIME)))) <= 2)
    Si autre elle devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Retour_Presta = 'oui' 
    AND (CAST(Table_Inter.DATE_REA AS DATETIME) >= @Date_Debut) 
    AND (CAST(Table_Inter.DATE_REA AS DATETIME) <= @Date_Fin) 
    AND (ABS(DATEDIFF(day,(CAST(Table_Inter.DATE_APL AS DATETIME))
    , (CAST(Table_Inter.DATE_REA AS DATETIME)))) <= 1)
    precision ,c'est du sql server... merci pour les reponses

  4. #4
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Ce genre de chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    where 
    Retour_Presta = 'oui' 
    AND (CAST(Table_Inter.DATE_REA AS DATETIME) >= @Date_Debut) 
    AND (CAST(Table_Inter.DATE_REA AS DATETIME) <= @Date_Fin) 
    AND (ABS(DATEDIFF(day,(CAST(Table_Inter.DATEPREVU AS DATETIME))
    , (CAST(Table_Inter.DATE_REA AS DATETIME)))) <= case lblcontrat when 'Robinetterie' then 2 else 1 end)
    Bon courage

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

Discussions similaires

  1. Utiliser un alias de colonne dans une clause Where MS SQL
    Par sir dragorn dans le forum Langage SQL
    Réponses: 11
    Dernier message: 12/10/2011, 10h31
  2. [t-sql] instruction CASE dans clause WHERE
    Par ignitionflip dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/01/2007, 19h07
  3. [Oracle / Sql] clause where avec resultat d'une requete
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2006, 10h37
  4. [SQL] clause Where sur un booléen
    Par mosquitout dans le forum Access
    Réponses: 3
    Dernier message: 21/12/2005, 22h29
  5. État, Requète et clause Where(SQL)
    Par Philippe299 dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 01h22

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