1

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

MD TAHMID HOSSAIN
  • 1,581
  • 7
  • 29
  • 54
  • 3
    Possible duplicate of [Simulating group\_concat MySQL function in SQL Server?](http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-sql-server) – BeaglesEnd Apr 18 '16 at 16:12

1 Answers1

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
Srinika Pinnaduwage
  • 1,044
  • 1
  • 7
  • 14