在Report Builder中,我有一个包含许多参数的报告,其中三个参数是@DateFrom,@ DateTo,@ Check
来自Main数据集的查询为此结果提供了3列:Name,Check,ExpiryDate。
Name Check ExpiryDate
A Y 05/01/2016
B N 06/10/2017
C Y 08/15/2017
D N 08/20/2017
E Y 09/05/2017
F N 10/20/2018
我需要根据参数值将报告分为3组, 例如,运行报告的用户将输入:@DateFrom = 08/1/2017 @DateTo:08/31/2017 =>报告应如下所示:
组当前范围ExpiryDate [(ExpiryDate> = @DateFrom和ExpiryDate< = @ DateTo)和Check = @Check]
C Y 08/15/2017
D N 08/20/2017
范围前的组ExpiryDate和Check ='Y'[(ExpiryDate< = @DateFrom)和Check ='Y']
A Y 05/01/2016
范围后的组ExpiryDate和Check ='Y'[(ExpiryDate> = @DateTo)和Check ='Y']
E Y 09/05/2017
在使用Main数据集的tablix中(报表中只有一个Tablix),有一个名为“Details”的RowGroup
我读了很多arcticles,我尝试了很多方法,但没有任何效果,因为我猜不出正确的方法。你能帮忙吗?
答案 0 :(得分:1)
创建另一个组的最简单方法是修改SQL并使用分组逻辑添加另一个列。
SELECT
....,
CASE
WHEN ExpiryDate BETWEEN @DateFrom AND @DateTo AND Check = @Check
THEN 'Current'
WHEN ExpiryDate <= @DateFrom AND Check = 'Y'
THEN 'Before'
WHEN ExpiryDate >= @DateTo AND Check = 'Y'
THEN 'After'
END as MyGroup,
...
FROM ...
这样您就可以使用新的自定义分组字段在Tablix中创建父组。
如果SQL非常复杂或者您正在使用共享数据集/存储过程,则将组添加到SSRS选项卡,并使用SWITCH构造指定具有类似逻辑的自定义表达式。
编辑,向SQL CASE添加参数
CASE
WHEN expirydate BETWEEN @DateFrom AND @DateTo AND [check] IN @check
THEN 'Current'
WHEN expirydate <= @FromDate AND [check] = 'Y'
THEN 'Before'
WHEN expirydate >= @FromDate and [check] = 'Y'
THEN 'After'
END as MyGroup
请注意,检查仅由方括号括起,因为它是一个保留的SQL关键字。