我有一个学生表,其中有一列名为 SEN。SEN 包含每个记录的 S、A、P 或 N。在我的 WHERE 子句中,我想根据 SEN 中的值过滤我的结果集。我的 SELECT 语句包含一个名为 subgroup 的变量,该变量由参数填充。当过滤到单个值是 SEN 列时,我已经设法让它工作,即:
SEN = CASE
WHEN @Subgroup = 'SENA' THEN 'A'
WHEN @Subgroup = 'SENP' THEN 'P'
WHEN @Subgroup = 'SENS' THEN 'S'
WHEN @Subgroup = 'SENNo' THEN 'N'
END
但我想过滤学生有 A、P 或 S 的位置,并使用参数值“SENYes”触发此过滤器。我下面的代码不起作用,但可以说明我的要求。
SEN = CASE
WHEN @Subgroup = 'SENYes' THEN 'A' OR 'P' OR 'S'
WHEN @Subgroup = 'SENA' THEN 'A'
WHEN @Subgroup = 'SENP' THEN 'P'
WHEN @Subgroup = 'SENS' THEN 'S'
WHEN @Subgroup = 'SENNo' THEN 'N'
END
更新:
在我的代码中使用 IN 运算符有效:
SEN = CASE
WHEN @Subgroup = 'SENA' THEN 'A'
WHEN @Subgroup = 'SENP' THEN 'P'
WHEN @Subgroup = 'SENS' THEN 'S'
WHEN @Subgroup = 'SENNo' THEN 'N'
END
OR
(@SubGroup='SENYes' AND SEN IN ('A','P','S'))