Microsoft SQL报告生成器:多行'重复'每个ID一行

时间:2014-10-16 12:13:58

标签: sql report

Microsoft SQL Server报告构建器

我有一个查询,它返回社区智能数据库中的各种信息,运行方式如下:

SELECT
viewadhocorganisation.[org_id]
..../other fields
viewadhocorganisationmainactivities.[Main Activity]

FROM
viewadhocorganisation LEFT JOIN viewadhocorganisationmainactivities
ON viewadhocorganisation.[OrganisationID] = viewadhocorganisationmainactivities.[Organisation ID]

WHERE
viewadhocorganisation.[city name] = 'MyCity'

这将使每个组织在新行上返回其各自的字段,其中每个主要活动单独列在一个新行中(即重复) 因此SELECT DISTINCT在这个实例中什么也不做,因为每一行都不是严格的重复

即返回:

ID   | Org Name   | other fields  | Main Activity
1    | Org 1      | other fields  | Activity 1
1    | Org 1      | other fields  | Activity 2
1    | Org 1      | other fields  | Activity 3
1    | Org 1      | other fields  | Activity 4
2    | Org 2      | other fields  | Activity 1
2    | Org 2      | other fields  | Activity 5
2    | Org 2      | other fields  | Activity 7
2    | Org 2      | other fields  | Activity 8

主要活动是从单独的查找表填充的文本字符串(由中央系统管理员维护)我尝试了各种SUM,AGGREGATE,(也试过各种JOIN,LOOKUP SET但我似乎遇到了很多错误但是我可能会错误地使用它)但是还没有找到一个解决方案来获得所需的输出,其中所有主要活动都在一行中用逗号分隔:

需要输出:

Org_ID | Org Name | other fields | Main Activity 1 | Org 1 | other fields | Activity 1, Activity 2, Activity 3 2 | Org 2 | other fields | Activity 1, Activity 5, Activity 7

目的是将信息转储集成到谷歌地图API中,显示组织地址,组织2等显示他们的主要活动,我已经有一个程序但是无法将主活动字段整理成一行

编辑:我无法访问后端,只能从供应商创建的视图和表格中进行报告

2 个答案:

答案 0 :(得分:0)

您可以使用临时表来实现此目的。 从viewadhocorganisationmainactivities中将所需的活动字符串放在一个临时表中,然后将该临时表与主表联系起来,即viewadhocorganisation。

答案 1 :(得分:0)

您需要将表连接到自身并使用stuff子句以逗号分隔格式获取字符串。 See this fiddle