我正在尝试锻炼这样的东西。这是一个示例代码,因为我无法提出整个存储过程。
我从表中获取值,同时将@children
作为SP的参数。仅当AND
中的值大于1时,我才想运行@children
条件。是否可以在SQL Server 2008中的IF
子句中添加WHERE
条件?我怎样才能实现以下目标?从逻辑上讲,下面是我想要实现的情况。如果您有任何疑问,请告诉我们,以便我提供更多信息。
Select empId, empDesignation, empSalary, hasChildren from Employee Where empDesignation = 'Manager'
IF (@children > 2 )
{
AND hasChildren = 1
}
答案 0 :(得分:3)
您可以将合并查询与$document[0].body.scrollTop
和AND
运算符结合使用:
OR
在这种情况下,如果Select empId, empDesignation, empSalary, hasChildren
from Employee
Where empDesignation = 'Manager'
AND (@children < 2 OR hasChildren = 1)
为1或更低,则只有条件@children
有效,因此永远不会评估条件@children < 2
。
另一方面,hasChildren = 1
大于1,则条件@children
无效,在这种情况下,条件@children < 2
将被评估。
答案 1 :(得分:0)
使用CASE可以这样工作:
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
AND (
CASE
WHEN @children <= 2 THEN 1
WHEN @children > 2 AND hasChildren = 1 THEN 1
ELSE 0
END
) = 1
或者,你可以这样做:
IF @children > 2
BEGIN
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
AND hasChildren = 1
END
ELSE
BEGIN
SELECT
empId,
empDesignation,
empSalary,
hasChildren
FROM Employee
WHERE
empDesignation = 'Manager'
END