如何使用参数过滤数据集?

时间:2017-12-18 19:31:45

标签: sql sql-server reporting-services

我有两个报告共享一个存储过程作为数据集源,除了filter clausule之外几乎相同。 我已经创建了一个内部报表参数以及根据此参数设置过滤器的内容。

我试过了:

...data
    WHERE 
        CASE WHEN @ReportFilter = 1 THEN apd.[Date] BETWEEN @DateFrom AND @DateTo
             WHEN @ReportFilter = 2 THEN pd.[Date] BETWEEN @DateFrom AND @DateTo
        END

2 个答案:

答案 0 :(得分:4)

只需使用case表达式返回单个日期值,然后检查该值是否介于@DateFrom和@DateTo之间。我还简化了案例表达式。

WHERE 
    CASE @ReportFilter 
        WHEN 1 THEN apd.[Date]
        WHEN 2 THEN pd.[Date] 
    END
    BETWEEN @DateFrom AND @DateTo

但要注意BETWEEN,它可能会带来一些挑战:

答案 1 :(得分:0)

尝试

(1 = CASE WHEN @ReportFilter = 1 and apd.[Date] BETWEEN @DateFrom AND @DateTo then 1
          WHEN @ReportFilter = 2 and pd.[Date] BETWEEN @DateFrom AND @DateTo then 1
        END)