SSRS:为动态员工薪资矩阵添加列序号的技术问询
SSRS矩阵动态列序号实现方案
需求说明
当前用SSRS矩阵展示员工薪资明细,结构如下:
| Employee Code | Employee name | Basic | HRA | Travel Allowance | Special Allowance | Total |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 07686 | Alex | 5687.00 | 657.00 | 102.00 | 6446.00 | |
| 08761 | Nick | 5375.00 | 650.00 | 205.00 | 6230.00 |
其中:
- 静态列:
Employee Code、Employee Name、Total - 动态列:
Basic、HRA等薪资构成项(数量不固定) - 需要在所有列上方添加连续的列序号行(如示例中的1、2、3...)
实现步骤
1. 静态列序号设置
直接在对应表头单元格填写固定值或计算表达式:
Employee Code列的序号单元格写1Employee Name列的序号单元格写2Total列的序号单元格用表达式计算:
注:=CountDistinct(Fields!SalaryItem.Value) + 3SalaryItem是你用来分组动态薪资列的字段名称,+3是因为前两个是静态列,Total是最后一列,序号要在动态列总数基础上加前两个静态列的位置
2. 动态列序号设置
在动态列组的序号单元格中,使用RunningValue函数生成连续序号:
=RunningValue(Fields!SalaryItem.Value, CountDistinct, Nothing) + 2
解释:
RunningValue会按照动态列的遍历顺序累加计数+2是因为前两个静态列已经占用了序号1、2,动态列从3开始计数
3. 矩阵结构调整
- 确保矩阵有两行表头:第一行显示列名称(如Employee Code、薪资项名称、Total),第二行显示序号
- 将静态列的序号单元格放在对应静态列的第二行表头位置,动态列的序号表达式放在动态列组的第二行表头单元格中
注意事项
- 如果需要固定动态列的显示顺序,要在数据集查询中对
SalaryItem字段排序,或在矩阵动态列组的属性里设置排序规则,确保序号和列顺序匹配 - 测试不同数量动态列的场景,验证Total列的序号计算是否准确
内容的提问来源于stack exchange,提问作者Angshujit Bhattacharyya
相关产品推荐
相关产品推荐

