如何避免基于IF条件的2个选择查询

时间:2019-08-08 15:53:28

标签: sql sql-server

是否有可能避免编写两个选择查询,并使用一些case语句或逻辑组合到一个查询中。

如果Flag为true,则显示学生记录,其百分比为> 2,否则显示所有内容。

DECLARE @StudentPercentageFlag BIT = 1


IF(@StudentPercentageFlag = 1)
BEGIN
 SELECT * FROM STUDENT WHERE STUDENTPERCENTAGE > 2
END
ELSE
BEGIN
    SELECT * FROM STUDENT 
END

1 个答案:

答案 0 :(得分:2)

您可以延长条件:

DECLARE @StudentPercentageFlag BIT = 1;

SELECT * 
FROM STUDENT 
WHERE (STUDENTPERCENTAGE > 2 AND @StudentPercentageFlag = 1)
   OR (@StudentPercentageFlag IS NULL)
   OR (@StudentPercentageFlag <> 1);