Невозможно проверить наличие нескольких равенств, используя только одно выражение.Вы можете использовать следующий синтаксический прием:
CASE WHEN 'Value' IN (TB1.ColumnX, TB1.ColumnY, TB1.ColumnZ)
THEN Statement1 ELSE ' ' END AS MyColumn
Альтернативой этому может быть повторение проверки полного равенства для каждого столбца:
SELECT
CASE
WHEN TB1.ColumnX = 'Value' OR
TB1.ColumnY = 'Value' OR
TB1.ColumnZ = 'Value'
THEN Statement1
ELSE ' '
END AS MyColumn
FROM
TB1 LEFT OUTER JOIN TB2
ON TB1.JOINCOL = TB2.JOINCOL
LEFT OUTER JOIN TB3
ON TB2.JOINCOL2 = TB3.JOINCOL
WHERE
TB1.Column1 BETWEEN TB2.Column1 AND TB3.Column1;
Если вам нужно обратиться к CASE
выражение в предложении WHERE
, тогда у вас есть два варианта.Во-первых, вы можете запросить текущий запрос и назначить псевдоним для выражения CASE
:
SELECT *
FROM
(
SELECT CASE WHEN ... AS exp
FROM TB1 ...
) t
WHERE exp = ...
Или вы можете избежать подзапроса и просто повторить все выражение CASE
в WHERE
пункт.