带有"where in"子句的case语句

Ron*_*anC 0 sql t-sql sql-server case where

我有一个场景,我需要在where子句中使用多个值,如果传递给查询的参数是99999,否则我只使用param本身.我使用"IN"作为where子句的一部分,但我得到以下错误"关键字'CASE'附近的语法不正确".任何一个提供替代不正确的查询,将获得我需要的结果?

DECLARE @IPD_NEWS_TYPE_PARAM decimal (18,0)
 SET @IPD_NEWS_TYPE_PARAM = 99999

SELECT 
    n.id,
    n.headline,
    n.news_type_id
FROM news n
WHERE n.news_type_id IN
CASE WHEN @IPD_NEWS_TYPE_PARAM = 99999 THEN (1,2,3,4,5)
ELSE
(@IPD_NEWS_TYPE_PARAM)
END
Run Code Online (Sandbox Code Playgroud)

Har*_* CO 5

也许你想要:

DECLARE @IPD_NEWS_TYPE_PARAM decimal (18,0)
 SET @IPD_NEWS_TYPE_PARAM = 99999

SELECT 
    n.id,
    n.headline,
    n.news_type_id
FROM news n
WHERE (n.news_type_id IN ('1','2','3','4','5') AND @IPD_NEWS_TYPE_PARAM = 99999) 
   OR (n.news_type_id = @IPD_NEWS_TYPE_PARAM AND @IPD_NEWS_TYPE_PARAM <> 99999)
Run Code Online (Sandbox Code Playgroud)