如何根据参数值过滤不同的日期

时间:2014-08-04 04:29:52

标签: sql-server reporting-services ssrs-2008

在SSRS中,是否可以根据参数值显示不同的日期字段结果? 以下是要求:有一个名为status(值:open,closed,pending)的参数,它根据状态字段过滤结果。如果选择开启,则所有未结贷款将显示,如果未决,则将显示所有待处理的贷款记录。每个状态都有自己的日期列。在报告中,用户将首先选择状态(打开,关闭或挂起),然后日期参数将根据所选内容过滤日期字段。因此,如果用户选择打开状态,则日期字段将在打开日期字段上过滤。如果选择关闭,则日期过滤器将在关闭日期过滤,依此类推。我知道将使用级联参数功能,但我真的很困惑如何允许日期过滤器在特定状态日期(根据选择的状态值)进行过滤。

1 个答案:

答案 0 :(得分:1)

您可以在SQL中使用WHERE子句中的case语句执行此操作。

这样的事情:

WHERE CASE @statusParam
       WHEN 'open' THEN tbl.open_date
       WHEN 'closed' THEN tbl.close_date
       WHEN 'pending' THEN tbl.pending_date
    END > @startDateParam

或者您可以在报表图层使用过滤器表达式中的SWITCH()

进行此操作
=SWITCH(
    Parameters!statusParam.Value="open", Fields!open_date.Value,
    Parameters!statusParam.Value="closed", Fields!close_date.Value,
    Parameters!statusParam.Value="pending", Fields!pending_date.Value
) > Parameters!startDateParam.Value

首选SQL,因为它会减少返回的行数,除非您需要报告的其他部分的其余数据集。