2010-05-10 3 views
1

Je suis un débutant sql, j'utilise MSSQL2005lorsque l'état en fonction du paramètre

J'aime faire de sélection avec la condition qui est en fonction du paramètre d'entrée

J'ai essayé cela.

WHERE CF.PROCESS_DATE = '2010-05-05' AND 
CASE @CATEGORY_LEVEL 
    WHEN 'L' THEN CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '' 
    WHEN 'M' THEN CAS.SCATEGORY_ID = '' 
END 

mais n'a pas fonctionné et s'est produit une erreur.

sql est difficile de programmeur débutant .. TT

Répondre

1

Vous pouvez réécrire la condition:

WHERE CF.PROCESS_DATE = '2010-05-05' AND 
     (
      (@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '') OR 
      (@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '') 
     ) 
1
WHERE CF.PROCESS_DATE = '2010-05-05' AND 
    (

    (@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '') 

    OR 

    (@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '') 

    ) 

() heureusement, votre code fonctionne sur autre base de données (par exemple, Postgres, MySQL), SQL Server n'a pas de support de première classe pour boolean, donc votre expression après THEN ne donnera pas de type booléen, donc ne fonctionnera pas dans Sql Server

Questions connexes