如果..Else或Case在WHERE子句中 - 不同的东西

Ric*_*ich 5 sql conditional if-statement case where

我在这里阅读了大量的问答,但没有一个符合我想要实现的目标.我甚至不知道这是否可能!任何帮助/建议将不胜感激.

我正在尝试构建一个WHERE基于的条件子句

CustID (int) = @CustomerID 
Run Code Online (Sandbox Code Playgroud)

如果@CustomerID = 0那时我想要结果WHERE CustID > 0(即返回所有客户),否则我只想要某些客户CustID = @CustomerID

这可能吗?

ant*_*oft 16

做WHERE(@CustomerID = 0或CustID = @CustomerID)


Hec*_*hez 7

这样的事情?

SELECT * 
FROM YOURTABLE
WHERE 
( CASE 
     WHEN @CustomerID = 0 THEN CustID 
     ELSE 1 
  END
) > 0
AND 
( CASE 
     WHEN @CustomerID <> 0 THEN @CustomerID 
     ELSE CUSTID 
  END
) = CUSTID
Run Code Online (Sandbox Code Playgroud)