我正在使用Pentaho,我想知道是否可以这样做一些查询:
SELECT Something
FROM Somewhere
WHERE (CASE WHEN condition1 = 0 THEN Option IN (Parameter) ELSE
(Option IN (SELECT Option FROM Somewhere_else)) END);
如果你想要一些精度,我想在我的WHERE子句中不遵守我的条件时选择所有内容(我想在哪里选择的东西与原来的select不同)。 不要犹豫,问我的方法,当然要回答!
谢谢!
PS:参数是Pentaho参数,在此表示数组
答案 0 :(得分:4)
只需使用常规条件:
SELECT Something
FROM Somewhere
WHERE (condition1 = 0 AND Option IN (Parameter))
OR (condition1 != 0 AND Option IN (SELECT Option FROM Somewhere_else));
答案 1 :(得分:0)
你应该尝试以下,
SELECT Something
FROM Somewhere
WHERE
1 = case when condition1 = 0 THEN
case when Option IN (Parameter) then 1 else 0 end
else
case when Option IN (SELECT Option FROM Somewhere_else) then 1 else 0 end
end
答案 2 :(得分:0)
CASE
在您的陈述中无关紧要,而且在WHERE
条款中几乎无关紧要。
使用@ X.L.Ant建议的简单条件,或者你可以做一些讨厌的加入,如
SELECT *
FROM table a
INNER JOIN somewhere ON (option = 0 AND a.id = somewhere.id)
INNER JOIN parameter ON (option != 0 AND a.id = parameter.id)
假设你的参数有点像桌子。