我试图在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(现在)来完成查询。
感谢您的帮助。
答案 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,则比较参数值,否则比较今天的日期。