2016-04-18 11 views
1

let zeigen, sagen, dass ich wie unten Lebensmittel eine Tabelle (FoodID, FoodName) Package (PackageID, Package, FoodID)Wie Sammlung aller Werte einer Spalte in SQL Server 2014

Wenn ich tun

SELECT P.PackageID,F.FoodName FROM FOOD F inner join PACKAGE P on F.FoodID = P.FoodID 

es gibt Daten wie folgt

 
PackageID  FoodName 
1    Mango 
1    Apple 
1    Tacos 

, aber ich möchte es bekommen wie folgt

 
PackageID  FoodName 
1    Mango,Apple,Tacos 

So geht

+3

Mögliche Duplikat [Simulieren Gruppe \ _concat MySQL-Funktion in SQL Server?] (Http://stackoverflow.com/questions/451415/simulating-group-concat-mysql -function-in-sql-server) – BeaglesEnd

Antwort

1
CREATE TABLE #FOOD (FoodID INT, FoodName VARCHAR(100)) 
CREATE TABLE #PACKAGE (PackageID INT, FoodID INT) 

INSERT INTO #FOOD 
SELECT 1, 'Mango' 
Union 
SELECT 2, 'Apple' 
Union 
SELECT 3, 'Tacos' 

INSERT INTO #PACKAGE 
SELECT 1, 1 
Union 
SELECT 1, 2 
Union 
SELECT 1, 3 


SELECT F1.PackageID, 
    STUFF((SELECT ', ' + F2.FoodName 
     FROM  
     (SELECT P.PackageID,F.FoodName 
      FROM #FOOD F 
      INNER JOIN #PACKAGE P 
      ON F.FoodID = P.FoodID) F2 
      WHERE  F1.PackageID = F2.PackageID 
     FOR XML PATH('') 
     ), 1, 2, '') [Attributes] 
FROM  (SELECT P.PackageID,F.FoodName 
FROM  #FOOD F 
INNER JOIN #PACKAGE P 
ON F.FoodID = P.FoodID) F1 
GROUP BY F1.PackageID