Tsql T-SQL不执行WHERE子句SSRS的第二部分
我有一个从存储过程运行的SSRS报告。我有两个必须选择的参数。我的第一个参数工作得很好,但当选择第二个参数(Rep)时,它将被报告忽略并返回所有RepTsql T-SQL不执行WHERE子句SSRS的第二部分,tsql,reporting-services,where-clause,Tsql,Reporting Services,Where Clause,我有一个从存储过程运行的SSRS报告。我有两个必须选择的参数。我的第一个参数工作得很好,但当选择第二个参数(Rep)时,它将被报告忽略并返回所有Rep @Town Varchar(100) ,@Rep Varchar(100) select a.Customer ,a.CustName ,a.Rep ,a.Town ,a.Qty ,a.SalesType ,b.Qty1 ,c.Qty2 ...... fr
@Town Varchar(100)
,@Rep Varchar(100)
select
a.Customer
,a.CustName
,a.Rep
,a.Town
,a.Qty
,a.SalesType
,b.Qty1
,c.Qty2
......
from #1 a
left join #2 b
on a.Rep = b.Rep
and a.Town = b.Town
and a.Customer = b.Customer
and a.SalesType = b.SalesType
left join #3 c
..........
WHERE ('ALL' IN (@Town)) OR (a.Town IN (@Town))
and ('ALL' IN (@Rep)) OR (a.Rep IN (@Rep))
在这里猜测,但我假设您希望将
@Town
和@Rep
的子句作为一组进行计算。为此:
WHERE ('ALL' IN (@Town) OR a.Town IN (@Town))
and ('ALL' IN (@Rep) OR a.Rep IN (@Rep))
正如您所看到的,由于每个子句都是独立的,因此您将得到短路行为。在这里猜测,但我假设您希望将
@Town
和@Rep
的子句作为一组进行计算。为此:
WHERE ('ALL' IN (@Town) OR a.Town IN (@Town))
and ('ALL' IN (@Rep) OR a.Rep IN (@Rep))
正如您所看到的,因为每个子句都是独立的,所以您将得到短路行为