我有一个带有两个参数的报告:StartDate和EndDate。
我有一张包含省名的表格,每个省都需要计算:
每个表达式都可以使用过滤器,因此我不知道如何在SSRS中处理它?</ p>
答案 0 :(得分:1)
将分组添加到省的表中。确保您的数据集按省顺序排序。删除详细信息行(您不需要它,我们只需要SUM)并删除组标题。我们将数据放入“组尾”。
第一列只是省名。
第二列是期初余额(在“开始日期”之前),因此如果日期小于“开始日期”,我们可以使用以下表达式求和:
=SUM(IIF(Fields!Record_DATE.Value < Parameters!StartDate.Value,
Fields!PayAmt.Value,
CDEC(0)
)
)
第三列是“期间余额”(两个日期之间),因此,如果使用以下表达式表示日期在“开始日期”和“结束日期”之间,我们将其相加:
=SUM(IIF(Fields!Record_DATE.Value >= Parameters!StartDate.Value AND Fields!Record_DATE.Value <= Parameters!EndDate.Value,
Fields!PayAmt.Value,
CDEC(0)
)
)
最后一列是期末余额(结束日期之前的任何内容),因此如果使用以下表达式,则如果日期在结束日期之前,我们将其相加:
=SUM(IIF(Fields!Record_DATE.Value <= Parameters!EndDate.Value,
Fields!PayAmt.Value,
CDEC(0)
)
)
答案 1 :(得分:0)
除了@HannoverFist关于如何在报告中进行设置的出色答案外,您还可以在SQL语句中执行此操作以在服务器上进行计算(而不是下载整个数据集以求和)。像这样:
SELECT Province,
SUM(CASE WHEN Record_DATE < @StartDate THEN PayAmt END) AS OpeningBalance,
SUM(CASE WHEN Record_DATE >= @StartDate AND Record_DATE <= @EndDate THEN PayAmt END) AS PeriodBalance,
SUM(CASE WHEN Record_DATE <= @EndDate THEN PayAmt END) AS ClosingBalance
FROM ProvincePaymentsTable
GROUP BY Province
ORDER BY Province
(使用Sql Server语法)