我有两个报告共享一个存储过程作为数据集源,除了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
答案 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)