SSRS分页报表:如何在工作日列标题下显示对应日期
在SSRS分页报表中为工作日列标题添加对应日期的解决方案
方案1:修改SQL数据集,直接返回对应日期
- 在你的SQL查询中,基于选定的
ReportingDate参数计算当周周一至周五的具体日期,同时保留原有工作日统计列:DECLARE @SelectedDate DATE = @ReportingDate -- 计算当周周一(假设一周从周一开始) DECLARE @Monday DATE = DATEADD(DAY, DATEDIFF(DAY, 0, @SelectedDate) / 7 * 7, 0) DECLARE @Tuesday DATE = DATEADD(DAY, 1, @Monday) DECLARE @Wednesday DATE = DATEADD(DAY, 2, @Monday) DECLARE @Thursday DATE = DATEADD(DAY, 3, @Monday) DECLARE @Friday DATE = DATEADD(DAY, 4, @Monday) -- 原有查询逻辑+日期字段返回 SELECT Region, Country, [周一] = SUM(CASE WHEN ... END), -- 保留原统计逻辑 [周二] = SUM(CASE WHEN ... END), [周三] = SUM(CASE WHEN ... END), [周四] = SUM(CASE WHEN ... END), [周五] = SUM(CASE WHEN ... END), MondayDate = @Monday, TuesdayDate = @Tuesday, WednesdayDate = @Wednesday, ThursdayDate = @Thursday, FridayDate = @Friday FROM YourTable WHERE -- 原过滤条件,确保数据属于选定日期所在周 GROUP BY Region, Country - 在SSRS矩阵中调整列标题:
- 选中现有工作日列标题单元格,右键选择「插入行」→「在下方插入行」。
- 周一列的下方单元格绑定表达式:
=First(Fields!MondayDate.Value, "你的数据集名称"),并设置格式为yyyy/MM/dd。 - 周二到周五的下方单元格依次绑定
TuesdayDate、WednesdayDate等字段,统一日期格式。
方案2:不修改数据集,用SSRS表达式计算日期
如果不想改动SQL,直接在报表中通过表达式计算:
- 同样在矩阵列标题下方插入新行。
- 各工作日对应的日期表达式(假设一周从周一开始):
- 周一:
=Format(DateAdd(DateInterval.Day, -(Weekday(Parameters!ReportingDate.Value, 2) - 1), Parameters!ReportingDate.Value), "yyyy/MM/dd") - 周二:
=Format(DateAdd(DateInterval.Day, -(Weekday(Parameters!ReportingDate.Value, 2) - 2), Parameters!ReportingDate.Value), "yyyy/MM/dd") - 周三:
=Format(DateAdd(DateInterval.Day, -(Weekday(Parameters!ReportingDate.Value, 2) - 3), Parameters!ReportingDate.Value), "yyyy/MM/dd") - 周四:
=Format(DateAdd(DateInterval.Day, -(Weekday(Parameters!ReportingDate.Value, 2) - 4), Parameters!ReportingDate.Value), "yyyy/MM/dd") - 周五:
=Format(DateAdd(DateInterval.Day, -(Weekday(Parameters!ReportingDate.Value, 2) - 5), Parameters!ReportingDate.Value), "yyyy/MM/dd")
注:Weekday函数的第二个参数2指定周一为一周起始日,若你的环境起始日不同,可调整为对应数值(如1代表周日)。
- 周一:
关键注意点
- 确保
ReportingDate参数的类型为「日期/时间」,避免格式转换错误。 - 调整列标题行高,保证日期文本完整显示,建议设置文本居中对齐。
内容的提问来源于stack exchange,提问作者Susan-l3p
相关产品推荐
相关产品推荐

