我使用一个变量来让我选择在2个不同的“模式”运行:SQL - 不同的WHERE子句取决于变量
DECLARE @Mode as Varchar(1) = 'A'
SELECT
CASE
WHEN @Mode = 'A'
THEN FieldABC * 2
ELSE FieldABC * 3
END AS FieldABC,
CASE
WHEN @Mode = 'A'
THEN FieldDEF
ELSE FieldGHI
END AS FieldJKL
WHERE
FieldABC BETWEEN 0 AND 100
当我要运行SELECT的“B”版本,我只需要改变变量值。这一切工作正常。
我现在想改变WHERE
子句,以便它也取决于变量:
IF @Mode = 'A' THEN
WHERE FieldABC > 0
ELSE
WHERE FieldABC < 0
END IF
除此之外,这种语法是SQL完全胡说八道!
如何根据相同变量实现我的WHERE
子句的两种不同风格 - 或者在两种不同模式之间切换SELECT
的其他简单方法?
尝试使用[IF](https://msdn.microsoft。 com/pl-pl/library/ms182717(v = sql.110).aspx)。这种方法可能会损害您的执行计划(当然更复杂和反复查询,但这只是未来)。 –