SSRS列分组实现:同维度下多组采购数据的横向展示方法
SSRS 多组业务字段横向并列展示实现方案
我是SSRS新手,当前正在开发业务报表,对接的SQL Server源表样例数据如下:
**Region** | **CompanyName** | **CompanyCode** | **VendorCode** | **PurchaseNumber** | **Cost** | **InvoiceNumber** SouthWest | Company1 | Cpr132 | GOP1776 | UI199 | $30.67 | 1123 SouthWest | Company1 | Cpr132 | GOP1776 | UI451 | $49.19 | 1123
我期望实现的报表展示效果如下:
**Region** | **CompanyName** | **CompanyCode** | **VendorCode** | **PurchaseNumber** | **Cost** | **VendorCode** | **PurchaseNumber** | **Cost** | **InvoiceNumber** SouthWest | Company1 | Cpr132 | GOP1776 | UI199 | $30.67 | GOP1776 | UI451 | $49.19 | 1123
我的核心需求是:当VendorCode、PurchaseNumber、Cost存在多条不同的业务数据时,不需要把公共维度字段拆成多行展示,要将这些明细字段重复设置列头、横向并列排布。目前我不清楚具体实现路径,需要对应的操作指引。
落地操作步骤
- 预处理数据集
不要直接将原始明细数据集绑定到表控件,需要在查询SQL中按公共分组维度给明细行做序号标记,方便后续对齐。参考SQL逻辑:SELECT Region, CompanyName, CompanyCode, InvoiceNumber, VendorCode, PurchaseNumber, Cost, -- 按公共维度分组,给组内的采购明细行从1开始排序号 ROW_NUMBER() OVER ( PARTITION BY Region, CompanyName, CompanyCode, InvoiceNumber ORDER BY PurchaseNumber ) AS DetailSeq FROM 你的业务源表 - 搭建矩阵布局
从SSRS工具箱拖入矩阵控件到设计区,按维度拆分绑定:- 行分组设置:将
Region、CompanyName、CompanyCode、InvoiceNumber加入行分组,这类公共字段固定在报表左侧展示,不会随明细行重复 - 列分组设置:将预处理得到的
DetailSeq加入列分组,形成动态横向列组 - 交叉单元格绑定:在每个动态列组下,依次绑定
VendorCode、PurchaseNumber、Cost三个字段的取值
- 行分组设置:将
- 调整细节匹配预期效果
- 把动态列生成的序号表头替换为固定列名,也就是每个列组下重复显示
VendorCode、PurchaseNumber、Cost,和示例的列头结构保持一致 - 调整列宽,关闭矩阵的跨页拆分列选项,避免列数较多时被拆分到不同页面
- 运行报表验证:当同个公共分组下存在N条明细记录时,报表会自动生成N组横向并列的明细字段列,所有公共维度字段只展示一次,完全匹配预期的横向排布效果
- 把动态列生成的序号表头替换为固定列名,也就是每个列组下重复显示
内容的提问来源于stack exchange,提问作者jhon_123
相关产品推荐
相关产品推荐

