1

我有一个需要使用 SSRS rdl 显示的 SQL 服务器结果集。结果集 id 如下:

SpeakerId      Product    Topic 
16               a       A
16               a       B
16               b       C
16               a       D
17               b       B
17               c       C
17               c       E
18               a       B
18               c       A
19               c       C

我需要根据产品在 excel 的不同选项卡中显示此信息。每个演讲者只有一行,主题将根据字母顺序显示在不同的列中。当我尝试在 rdl 中实现此动态页面和列时,我面临以下问题:如果该选项卡中的产品和演讲者没有其他产品和演讲者的主题(在其他标签)有。

请提出任何解决此问题的方法。我尝试使用 Rank,但这个概念在这种情况下没有帮助,因为我们在 excel 中有多个页面。

谢谢你。

4

1 回答 1

0

在这种情况下,您需要确保为所有发言者返回所有必需的主题,以便 SSRS 知道显示主题。

一种方法是使用PIVOT查询,例如:

select SpeakerId
  , [A],[B],[C],[D],[E]
from ResultSet
pivot
(
  max(Product)
  for Topic in ([A],[B],[C],[D],[E])
) p

SQL Fiddle 与演示

您可以在此处看到每个发言者在结果中的每个主题都有一个列。

这意味着在报表中,您可以使用表格而不是矩阵来显示数据。

未知数量的主题?

如果您在编写报告查询之前不知道所需的主题,您可能仍然会遇到问题 - 在这种情况下,我建议您确保OUTER JOIN在主题表中包含一个。

显然,这取决于您的数据。但这很有用,因为这意味着每个演讲者的每个主题都有一行,这是您需要的...在这里您将使用矩阵在报告中显示结果。

无论您使用哪种方法,目标都是为 SSRS 提供一个包含所有可能的演讲者/主题组合的数据集,即使主题的实际值为NULL,因此报告始终为每个演讲者显示相同的主题列。

于 2013-07-05T10:39:11.890 回答