SSRS Sql查询带有when子句和输入参数

时间:2014-08-04 14:00:35

标签: sql sql-server reporting-services case-when

我试图在SSRS中使用SQL查询。 在SSRS中执行报表时执行此查询。它是一个只选择填充我的数据集的选择。 我希望在第一次执行报告时执行Date,然后我希望用户能够在需要时输入不同的日期,因此需要参数。 这是:

Select contrat from contrats ctr, 
INNER JOIN structure rs ON rs.id = ctr.id 
INNER JOIN structure_members rsm ON rsm.id_structure = rs.id_structure
where 
(((Date(ctr.date) = CASE WHEN ? IS NULL THEN Date(Now) END) or
(Date(rs.endDate) = CASE WHEN ? IS NULL THEN Date(Now) END)
GROUP BY crt.contrat

不要介意任何语法错误,我只是简化了我的查询以达到这一点:这可能吗? 我这样结束时可以做一个案子吗?

`CASE WHEN ? IS NULL THEN Date(Now)` 

?是我输入的日期,例如2014-08-04。如果我愿意,该值可以为null。这就是为什么我试图检查它是否为null然后使用Date(现在)来完成查询。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

Select contrat from contrats ctr 
INNER JOIN structure rs ON rs.id = ctr.id 
INNER JOIN structure_members rsm ON rsm.id_structure = rs.id_structure
where
Date(ctr.date) = ISNULL(?,Today())
or
Date(rs.enddate) = ISNULL(?,Today())
GROUP BY crt.contrat

可以使用CASE替换ISNULL语句以获取空输入的默认值并在比较中使用它。如果参数为非null,则比较参数值,否则比较今天的日期。