1

我不确定是否需要执行 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 可以做到这一点吗?

4

1 回答 1

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

SQL 小提琴示例

注意:您没有提供包含县名的表格,所以我只是在这里使用了 ID。我想你可以弄清楚其余的。

PIVOT当您想从基于行的数据中获取多列时会很有用,但由于您在这里只需要一,我认为它不会有用。

于 2013-04-09T01:22:04.070 回答