where子句SQLSERVER中的case语句

时间:2016-01-19 08:27:45

标签: sql sql-server tsql

我试着四处寻找但找不到任何可以帮助我的东西。

我正在尝试在SQL中执行此操作:

DECLARE @onlyMM INT

SET @onlyMM = 1

SELECT *
FROM cdn.magnag
WHERE CASE @onlyMM
        WHEN 1
            THEN man_zrdtyp NOT IN (
                    1616
                    ,2001
                    )
        ELSE - 1
        END

我遇到了问题:

where case @onlyMM when 1 then man_zrdtyp not in (1616,2001) else -1 end

如何为运营商case正确制作not in

2 个答案:

答案 0 :(得分:6)

我认为您需要以不同的方式制定WHERE子句。您可以使用OR而不是case语句。像这样:

WHERE
    (@onlyMM=1 AND man_zrdtyp not in (1616,2001))
    OR @onlyMM<>1

答案 1 :(得分:0)

你不想这样做?

where (case when @onlyMM = 1 then man_zrdtyp else -1 end) not in (1616,2001)