我想传递一个参数,根据它的值,我想评估这样的条件:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
DECLARE @Operation INTEGER = 0;
WITH CTEMycte AS
(
SELECT
Table1.Field1,
Table1.Field2,Table1.Field3
FROM
Table1
WHERE
Table1.Field2 = 1
)
SELECT Field1
FROM CTEMycte
WHERE somecondtion
AND
CASE WHEN @Operation = 0 THEN [CTEMycte].[Field3] >= 100
WHEN @Operation = 1 THEN [CTEMycte].[Field3] <= 100
WHEN @Operation = 2 THEN [CTEMycte].[Field3] = 100
END
答案 0 :(得分:3)
THEN
之后你不能有条件。你可以使用OR
:
WHERE somecondtion
AND (
(@Operation = 0 AND [CTEMycte].[Field3] >= 100)
OR
(@Operation = 1 AND [CTEMycte].[Field3] <= 100)
OR
(@Operation = 2 AND [CTEMycte].[Field3] = 100 )
)
或者,您可以在WHEN
部分中结合条件:
WHERE somecondtion AND
(CASE WHEN @Operation = 0 AND [CTEMycte].[Field3] >= 100 THEN 1
WHEN @Operation = 1 AND [CTEMycte].[Field3] <= 100 THEN 1
WHEN @Operation = 2 AND [CTEMycte].[Field3] = 100 THEN 1
ELSE 0
END) = 1