在SELECT

时间:2015-07-07 10:23:46

标签: mysql sql select pentaho

我正在使用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参数,在此表示数组

3 个答案:

答案 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)

假设你的参数有点像桌子。