我在 SELECT 语句中加入几个表,如下所示,它具有三个参数。
DECLARE @Jobid INT=0,
@leadid INT=0,
@employeeid INT=0
SELECT e.id,
l.id,
j.id,
e.NAME,
l.NAME,
j.NAME
FROM employee e
INNER JOIN leads l
ON e.leadid = l.id
INNER JOIN Jobs j
ON j.id = e.Jobid
无需过滤即可正常工作。
在 WHERE 子句中,我必须添加如下内容。如果三个 ID 中的任何一个大于零,那么我必须考虑 WHERE 子句中的过滤器;如果它等于零,我将不会考虑该特定条件。
If @jobid> 0
then introduce this condition in where clause (j.id=@jobid)
If @leadid> 0
then introduce this condition in where clause (l.id=@leadid)
If @employeeid> 0
then introduce this condition in where clause (e.id=@employeeid)
我知道如何通过动态 SQL 来实现这一点,但我需要一个静态 SQL 语句来实现这一点。
我尝试了以下方法:
where
((J.Id = @Jobid and @Jobid>0 )
or @Jobid=0)
and (
(L.Id = @leadid and @leadid>0 )
or @leadid=0
)
and (
(e.Id = @employeeid and @employeeid >0 )
or @employeeid =0
)
但性能受到了影响。
请建议我在静态 SQL 中执行此操作的任何其他更好的方法,特别是使用Case When
.