【问题标题】:combining multiple results into one row in SSRS在 SSRS 中将多个结果合并为一行
【发布时间】:2016-04-13 01:57:43
【问题描述】:

我有一个关于使用 SSRS 的简单调查报告。

它有 2 个问题。一个问题可以有多个选择,如下所示:

你叫什么名字?

选择你最喜欢的颜色 (Red, Blue, Green, Yellow, Brown, Purple)?

以下是示例查询结果:

Tim       Red
Tim       Blue
Tim       Green
Mary      Yellow
George    Brown
George    Red
Jill      Purple

我想像这样组合它们,以便它们都出现在报告中的一行上,以粗体(或不同颜色)显示选定的答案,而以纯文本形式显示未选定的答案。

Tim: 红色蓝色绿色、黄色、棕色、紫色

Mary: 红、蓝、绿、、棕、紫

George: 红色、蓝色、绿色、黄色、棕色、紫色

Jill: 红、蓝、绿、黄、棕、

我尝试在我的报告中使用这个表达式:

Join(Fields!favoriteColors.Value, ", ")

但是我只会在报告中看到#Error。

在 SSRS 2008R2 中是否可以实现这样的功能?

【问题讨论】:

  • 请说明您使用的工具或技术。
  • 您的用户是否使用参数来填写调查问卷?还是您报告现有数据库的结果?
  • @alejandrozuleta 我正在使用来自数据库的数据集。没有报告参数。谢谢
  • @JeffersonLima 抱歉,SSRS 连接到 SQL Server 2012 数据库。

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012


【解决方案1】:

很遗憾,JOIN 不像您想象的那样在分组基础上工作。

你可以在你的情况下作弊并这样做:

=JOIN(LOOKUPSET(Fields!Name.Value, Fields!Name.Value, Fields!Color.Value, "DataSet1"), ", ")

这将根据 Name 查找数据集中的值,并将 Colors 与逗号分隔符结合起来。

但是这只会获得选定的颜色 - 而不是所有颜色。我认为您需要另一个查询未选择的颜色并将它们组合起来。您可以将 HTML 标记用于粗体

="<b>" & JOIN(LOOKUPSET(Fields!Name.Value, Fields!Name.Value, Fields!Color.Value, "DataSet1"), ", ")
& "</b>" & JOIN(LOOKUPSET(Fields!Name.Value, Fields!Name.Value, Fields!Color.Value, "DataSet2"), ", ")

查询未选取的颜色:

SELECT Name, Color FROM 
(select DISTINCT Color from #COLORS ) C
CROSS JOIN 
(select DISTINCT Name from #COLORS ) N 
EXCEPT SELECT Name, Color FROM  #COLORS

【讨论】:

  • 这需要单独的数据集吗?或者我可以只使用现有的吗?谢谢!
  • 对于未选择的颜色,您需要一个带有查询的单独数据集来识别每个用户未选择的颜色,或者您可以在 SSRS 中编写一个 VB 函数来执行此操作 - 尽管 VB 会做更多的工作。
  • 我根据您的数据集为未选择的数据添加了一个示例查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2019-07-01
  • 1970-01-01
相关资源
最近更新 更多