我有一个查询的情况,如下所示。
在SSRS中,我有一个名为Block的@参数,其值如下:Block a、Block B和Block C。用户将选择Date range,然后选择Block Value。
输出本质上是一个显示名称的资格系统:主要查询如下:
Select EmpName, EmpID from EmpDtls where EmpassignID in (@Block)
现在我想做的事情如下:
当用户选择块时:查询应基于查询验证参数。有可能做这样的事情吗:
select Case
when (@Block) = A then (select Personnel_level from Block where PersnelQual = 'A', 'B')
when (@block) = C then (select Personnel_level from Block where PersnelQual = 'B', 'C')
END
from PersnelQual
因此,当用户使用以下参数运行报告时:
开始日期:2021年1月5日结束日期:2021年7月5日块:
输出应该类似于这个
Emp名称 | Emp Id |
---|---|
Jim | 123 |
玛丽 | 456 |
不需要case
。只需将条件放在WHERE
子句中即可:
select Personnel_level
from Block
where (@Block = A and PersnelQual in ('A', 'B')) or
(@block = C and PersnelQual in ('B', 'C'));