我不确定我是否需要做一个PIVOT来将我的数据提取到一个简单的结果集中。如果我这样做,那怎么样?
上下文
每个位置可以存在于0 - 多个县中。 对于每个位置,以相同的结果显示县(例如,逗号分隔)。
示例数据
Locations
Id Name
-------------
1 Street1
2 Street2
3 County1
4 County2
5 Neighbourhood12121
6 Country4
Counties
LocationId CountyId
---------------------
1 3
1 4
2 3
5 3
eg.
Street1 exists inside County1 and County2
Street2 exists inside County1
Neighbourhood12121 exists inside County1
The rest do not exist in any counties.
结果
我希望得到以下结果:
Id Name Counties
-------------------------------------------------
1 Street1 County1, County2
2 Street2 County1
3 County1 NULL
4 County2 NULL
5 Neighbourhood12121 County1
6 Country4 NULL
这可以用于Sql Server 2012吗?
答案 0 :(得分:2)
要获得以逗号分隔的列表,我只使用STUFF
- FOR XML PATH('')
技巧:
SELECT L.Id, L.Name,
STUFF((SELECT ', ' + CAST(C.CountyId AS varchar(max))
FROM Counties C
WHERE C.LocationId = L.Id
FOR XML PATH('')), 1, 2, '') AS Counties
FROM Locations L
注意:您没有提供带有县名的表格,因此我刚刚使用了这些ID。我假设你可以弄清楚其余部分。
如果您想从基于行的数据中获取多列, PIVOT
会很有用,但由于您只需要单列,所以我不要不认为它会有用。