带动态列的 SSRS 数据透视表

SSRS Pivot with Dynamic Columns

我的查询如下 Table...,

Create Table t_raw
(
Month nvarchar(255),
Name nvarchar(255),
Clear nvarchar(255),
Contact nvarchar(255),
Viewed nvarchar(255),
Clicks float
)

Insert Into t_raw values('Jan-18','ABC','DTC','dtc@mz.com','GM','2'),
                        ('Feb-18','QSC','FMM','fmm@mp.com','AM','6'),
                        ('Mar-18','ABC','DTC','lta@mz.com','OPS','9'),
                        ('Jan-18','MHY','GNMA','gnma@sr.com','REP','3'),
                        ('Feb-18','VRL','XLR','xlr@vn.com','TUC','5'),
                        ('Mar-18','MHY','GNMA','gnma@sr.com','XEM','7'),
                        ('Jan-18','ABC','DTC','mat@sd.com','SUD','2'),
                        ('Feb-18','MHY','GNMA','mio@fr.com','AFT','4'),
                        ('Mar-18','TOC','ADF','fin@yu.com','BPL','2')

下面是table:

我期待如下所示的输出。

谁能帮我实现这个期望的输出?

创建一个空白报表并创建一个数据源和一个数据集以连接到数据。将矩阵添加到报告中。将名称字段从 "Report Data" window 中的数据集拖动到矩阵的第一个 "Rows" 字段,并使用字段 select 或在 select 月份字段中列 header 字段。 Select 月份 header 下数据单元格中的点击次数字段,这应该会自动生成总和。在月列组的属性 window 中,将排序顺序更改为类似

的表达式
=CDate(Fields!Month.Value)

将名称字段的宽度更改为足以包含名称、清除、联系人和已查看四列(我选择了 12 厘米)。

  1. 现在,right-click 命名 header 单元格并通过上下文菜单插入 table。不要担心高度并在 table.
  2. 中添加一个额外的列
  3. 在名称数据单元格中执行相同操作

设计现在应该如下所示:

在月份字段旁边的 table 中(我将其称为 "header table"),删除数据行(以及相关组,当被询问时):

然后在 Sum(Clicks) 字段旁边的 table 中(我将其称为 "data table"),依次删除 header 行:

这些步骤解决了高度问题。

在 "header table" 中,输入列名称并根据需要设置格式。在"data table"、select对应的字段中显示。在"data table" 的Row Group "Details1" 的属性中。以正确的顺序添加所有 4 个字段以进行分组和排序。

对于 "data table" 中的前 3 个字段,使用属性 sheet 将 HideDuplicates 属性 设置为数据集的名称。

对于 Sum(Clicks) TextBox,将 TextAlign 设置为 "Center",将 VerticalAlign 设置为 "Middle"。

哦对了,给外矩阵的Name组加总,按要求对齐。

瞧:

已添加:

要合并 Name、Clear 和 Contact 的单元格,请执行以下操作:

  • 在 "data table" 的行组 "Details1" 的属性中,删除 NameClearContact 在 Grouping 和 Sorting 属性下,所以只剩下 Viewed。将群组重命名为 Viewed.
  • 删除 "data table" 的前三列(姓名清除联系人).
  • Right-clicking 始终是 "data table" 的最顶行组,成功为 ContactClear 添加 parent 组姓名.