如何在子查询的SQL中与AND一起使用案例

时间:2018-10-03 09:20:33

标签: sql

像-和CASE WHEN $P{MasteParam}='SERVICE' then SERVICE=V.SERVICE end

实际上,在子查询的情况下,我需要比较2列SERVICE = V.SERVICE –

这对我不起作用。

请帮助?

2 个答案:

答案 0 :(得分:1)

如果要在WHERE子句中实现简单条件,则可以用这种方式编写(不使用CASE):

(...)
AND (($P{MasteParam} = 'SERVICE' AND SERVICE=V.SERVICE)
     OR $P{MasteParam} != 'SERVICE')

或以这种方式(使用CASE):

(...)
AND V.SERVICE = CASE 
                  WHEN $P{MasteParam} = 'SERVICE'
                  THEN SERVICE
                  ELSE V.SERVICE
                END

通过设计和语法比较SERVICE=V.SERVICE 内部 CASE是不可能的,但是像我在第二条建议中那样使用CASE可以做到同样的事情,并允许您可以使用ELSE表达式定义不满足$P{MasteParam} = 'SERVICE'条件时要执行的操作。

我希望有帮助。

答案 1 :(得分:0)

您的意思是:

SELECT 
  ....
  CASE WHEN Country = 'Germany' AND ContactName LIKE 'M%'
    THEN 'Match'
    ELSE 'No match'
  END 
  AS [doing some matching]
  ...
FROM ... ...

我在您的代码中注意到的是,您有类似' then SERVICE = V.SERVICE '的内容,这看起来像是一条选择子句中的更新语句。

我不得不承认我不认识 $ P {MasteParam} ='SERVICE'语法。您使用哪个数据库服务器(由于SQL服务器,MySQL,Oracle,PostgreSQL等之间存在一些差异)?