像-和CASE WHEN $P{MasteParam}='SERVICE' then SERVICE=V.SERVICE end
实际上,在子查询的情况下,我需要比较2列SERVICE = V.SERVICE –
这对我不起作用。
请帮助?
答案 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等之间存在一些差异)?