是否可以在预定义的列中显示/填充相关数据?

Is it possible to present / populate related data in predefined columns?

如何更改数据的表示方式,以便我通过两列获得公主的名字,如 "Wanted output" 所示。骑士名字上的列分组为我提供了每个公主名字的公主列。我只想要两列,因为我知道一个骑士永远不会有超过两个公主。

我从输入源获得的数据如下所示 "Input data"。不幸的是,我不能使用 SQL 来操作数据,因为 QUERY 基于 FetchXML。我唯一可以使用的工具是我从 Reporting Services 获得的工具(我使用的是 Visual Studio 2015),所以在提出任何解决方案时请记住这一点。

从技术上讲,骑士和公主之间存在 1:M 关系,但系统中存在限制,因此骑士永远不会拥有超过 2 个公主。一个骑士可以拥有 0、1 或 2 个公主。

输入数据

_________________________________
|    Knight     |   Princess    |
|_______________|_______________|
|_____Adam______|_____Anna______|
|_____Adam______|____Angelica___|
|_____Erik______|_____Erika_____|
|_____Erik______|______Eva______|

输出

_________________________________________________________________________________
|    Knight     |   Princess 1  |   Princess 2  |   Princess 3  |   Princess 4  |
|_______________|_______________|_______________|_______________|_______________|
|_____Adam______|_____Anna______|_____Angelica__|_______________|_______________|
|_____Erik______|_______________|_______________|_____Erika_____|_____Eva_______|

想要输出

_________________________________________________
|    Knight     |   Princess 1  |   Princess 2  |
|_______________|_______________|_______________|
|_____Adam______|_____Anna______|___Angelica____|
|_____Erik______|_____Erika_____|_____Eva_______|

有什么建议吗?

这几乎是不可能的,但你已经幸运了(相当合理)每个骑士 2 个公主的限制。再多你就会被卡住。

我会使用 Table,而不是 Matrix object。第一列是骑士。

下一列有一个静态 Header "Princess 1",表达式为:

=Min(Fields!Princess.Value)

第 3 列有一个静态 Header "Princess 2",表达式为:

=Iif ( Min(Fields!Princess.Value) = Max(Fields!Princess.Value) , "" , Max(Fields!Princess.Value) )

您可以制作一个 table 带有 Knight 的行组,然后在该行组中 body 添加一个带有 Princess 的列组的 tablix。唯一的问题是,列 headers Princess 1..x 必须以某种方式硬编码到底层 table.

您可以通过对数据集使用 choose 和 lookupset 来做到这一点:

=Choose(1,LookupSet(Fields!Knight.Value,Fields!Knight.Value,Fields!Princess.Value,"InputData"))
=Choose(2,LookupSet(Fields!Knight.Value,Fields!Knight.Value,Fields!Princess.Value,"InputData"))
=Choose(3,LookupSet(Fields!Knight.Value,Fields!Knight.Value,Fields!Princess.Value,"InputData"))

等等

在每一列中。