SELECT ALL in a CASE inside a SELECT
SELECT ALL in a CASE inside a SELECT
我正在使用 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 一切(我想 select 在 where 中的东西与原来的 select).
不要犹豫,问我的方法,当然要回答!
谢谢!
PS: Parameter 是一个 Pentaho 参数,在这里代表一个数组
只需使用常规条件:
SELECT Something
FROM Somewhere
WHERE (condition1 = 0 AND Option IN (Parameter))
OR (condition1 != 0 AND Option IN (SELECT Option FROM Somewhere_else));
您应该尝试关注,
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
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)
假设您的参数有点 table。
我正在使用 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 一切(我想 select 在 where 中的东西与原来的 select). 不要犹豫,问我的方法,当然要回答!
谢谢!
PS: Parameter 是一个 Pentaho 参数,在这里代表一个数组
只需使用常规条件:
SELECT Something
FROM Somewhere
WHERE (condition1 = 0 AND Option IN (Parameter))
OR (condition1 != 0 AND Option IN (SELECT Option FROM Somewhere_else));
您应该尝试关注,
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
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)
假设您的参数有点 table。