简体   繁体   English

如何在 sql server 2014 中显示列的所有值的集合

[英]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)假设我有一个如下表 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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