2013-04-09 49 views
1

我不確定是否需要做一個PIVOT來將我的數據提取到一個簡單的結果集中。如果我這樣做,那麼如何?我需要在這個Sql Server 2012查詢中做一個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?

回答

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 Fiddle example

注:您還沒有與縣名的臺子上,所以我有隻是在這裏使用了ID。我想你可以找出其餘的。當你想從基於行的數據得到多列

PIVOT將是有益的,但因爲你只想要一個單列在這裏,我不認爲這將是有益的。

+0

-Perfect-我改變了子查詢以包含一個內部聯接,因爲它是一個關係表..它有答案。 Ta mate! – 2013-04-09 01:46:24