简体   繁体   中英

How to show collection of all values of a column in sql server 2014

let say i have a table like below Food(FoodID,FoodName) Package(PackageID,PackageName,FoodID)

When i do

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

it returns data like following

PackageID      FoodName
1              Mango
1              Apple
1              Tacos

but i want to get it like following

PackageID     FoodName
1             Mango,Apple,Tacos

How to do it

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM