where子句SQLSERVER中的case语句

Adi*_*diT 0 sql t-sql sql-server

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

我正在尝试在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
Run Code Online (Sandbox Code Playgroud)

我有一个问题:

where case @onlyMM when 1 then man_zrdtyp not in (1616,2001) else -1 end
Run Code Online (Sandbox Code Playgroud)

如何case为操作员正确制作not in

Ari*_*ion 6

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

WHERE
    (@onlyMM=1 AND man_zrdtyp not in (1616,2001))
    OR @onlyMM<>1
Run Code Online (Sandbox Code Playgroud)