在 SSRS 中将多个结果组合成一行

combining multiple results into one row in SSRS

我有一个简单的调查需要报告使用 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 中可以实现这样的功能吗?

不幸的是,JOIN 不能像您想象的那样在分组基础上工作。

您可以根据自己的情况作弊并这样做:

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

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

但是这只会得到选择的种颜色——不是所有颜色。我认为您需要另一个查询未拾取的颜色并将它们组合起来。您可以使用 HTML 标记 boldening.

="<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