如何在sql server 2014中显示列的所有值的集合
假设我有一张像下面这样的桌子 食物(FoodID,FoodName) 软件包(PackageID、PackageName、FoodID) 当我这样做的时候如何在sql server 2014中显示列的所有值的集合,sql,sql-server,Sql,Sql Server,假设我有一张像下面这样的桌子 食物(FoodID,FoodName) 软件包(PackageID、PackageName、FoodID) 当我这样做的时候 SELECT P.PackageID,F.FoodName FROM FOOD F inner join PACKAGE P on F.FoodID = P.FoodID 它返回如下数据 PackageID FoodName 1 Mango 1 Apple 1
SELECT P.PackageID,F.FoodName FROM FOOD F inner join PACKAGE P on F.FoodID = P.FoodID
它返回如下数据
PackageID FoodName
1 Mango
1 Apple
1 Tacos
PackageID FoodName
1 Mango,Apple,Tacos
包装食品名称
1芒果
一个苹果
1份墨西哥玉米卷
但我想得到它如下
PackageID FoodName
1 Mango
1 Apple
1 Tacos
PackageID FoodName
1 Mango,Apple,Tacos
包装食品名称
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