T-SQL - 在 where 和子句中使用参数

T-SQL - Using a parameter in where and clause

我想传递一个参数,并根据它的值来评估这样的条件:

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

你不能在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