在 SSRS 中使一行成为一列

Making a row a column in SSRS

我正在尝试制作我认为非常简单的报告,但是我似乎得不到我想要的结果,我什至不知道在 SSRS 中是否可行。

这是一个学生申请者名单和他们申请的课程。如果学生申请超过 1 门课程,例如 3 个 A Level(他们最多申请 5 个),我希望科目出现在不同的列中,而不是一列中的列表。一个简单的 table 显示报告如下:3 Columns: student ref, applications status, course(s)

我希望它看起来像这样: 7 columns: Student ref, Application status, course1, course2, course3 etc

我尝试过使用矩阵,但我能得到的最好结果是每个主题都有自己的专栏,所以我有很多空白文本框和很长的报告,因为我们提供了 50 多门课程。 50+ Columns: Student ref, Application status, English, Maths, Biology, sport, French etc

假设这适用于您的数据库,那么这应该是一个非常简单的解决方案。

正如您所说,我认为矩阵是可行的方法,如果您有很多课程且至少有一个应用程序,那么报告将非常广泛且易于管理。

因此,我重新创建了您的示例,然后对其进行了查询,添加了一个计算 'choice number' 的列。这个 'choice number' 只会在 1 到 5 之间(根据你声明没有学生申请超过 5 个科目)

下面是示例数据和简单查询

DECLARE @t TABLE([Student] varchar(10), [Status] varchar(10), [Subject] varchar(20))

INSERT INTO @t 
SELECT 'Stu001', 'OA', 'English' UNION
SELECT 'Stu001', 'OA', 'Maths' UNION
SELECT 'Stu002', 'OA', 'English' UNION
SELECT 'Stu002', 'OA', 'Biology' UNION
SELECT 'Stu002', 'OA', 'Sport' UNION
SELECT 'Stu003', 'OA', 'French' UNION
SELECT 'Stu003', 'OA', 'Chemistry' UNION
SELECT 'Stu003', 'OA', 'English' UNION
SELECT 'Stu004', 'OA', 'BTEC'

SELECT *
     , SubjectChoiceNumber = ROW_NUMBER() OVER(PARTITION BY Student, Status ORDER BY Subject)
    FROM @t

SubjectChoiceNumber只是分配了一个序号。序列按主题名称排序。

这为我们提供了以下输出...

现在您需要做的就是使用矩阵控件,将列分组设置为按 SubjectChoiceNumber 分组,并将数据单元格表达式设置为类似 =FIRST(Fields!Subject.Value)

的内容

报表设计如下所示

最终输出如下所示