在WHERE子句中使用CASE语句

时间:2018-10-03 16:13:07

标签: sql

我一直在寻找其他问题,找不到像我的具体情况那样的问题。

我需要某种方式在WHERE子句中执行条件语句,如下所示:

如果字段dqpoln不为0,则需要添加比较“ AND dqpoln = mppoln”。

   " SELECT ... "
   " FROM ... "
   " WHERE ((dqtype=@userType AND dqssn=@userSSN) OR (dqtype=a.maagtt AND dqssn=a.maassn)) " &
   " CASE dqpoln WHEN 0 THEN '' ELSE  AND dqpoln=mppoln  END "

我尝试了几种不同的方式使用CASE语句,并尝试了一些IF语句。似乎对我没有任何帮助。

2 个答案:

答案 0 :(得分:2)

您只能使用布尔逻辑来尝试:

(dqpoln = 0 OR dqpoln = mppoln)

或者,如果您坚持使用CASE,则使用类似这样的内容:

CASE dqpoln
  WHEN 0 THEN
    mppoln
  ELSE
    dqpoln
END = mppoln

答案 1 :(得分:0)

OP。我不知道我是否完全理解你的问题。 您是说在dqpoln不为0的情况下,它必须添加条件AND dqpoln = mppoln

下面的伪代码应基于我们对您的问题的有限了解而运行。假定这两个条件之一必须成立(或者为0,否则为dqpoln = mpplon):

SELECT
    ...
FROM
    ...
WHERE
    (
        (dqtype=@userType AND dqssn=@userSSN) OR (dqtype=a.maagtt AND dqssn=a.maassn)
    ) AND
    (
        ((dqpoln = 0) OR (dqpoln=mppoln))
    )