在 SQL 中使用 STUFF 将多个元素放入一个块中

Using STUFF in order to get multiple elements into one block in SQL

我有三个table。

第一个 Table 被称为客户,其中包含以下虚拟信息:

第二个 table 被称为 Customer_Product,其中包含以下虚拟信息:

第三个 table 被称为产品,其中包含此虚拟信息:

图表如下所示:

我目前有我写的这段代码:

SELECT 
    A.Customer_Name [Customer Name], 
    (SELECT CASE
        WHEN A.Customer_ID = A.Customer_Parent_ID
            THEN 'Is the Parent'
        ELSE(
        SELECT F.Customer_Name 
        FROM dbo.Customers F 
        Where F.Customer_ID = A.Customer_Parent_ID)
     END)  [Customer Parent's Name],
    C.Product_Name [Product They Own]
FROM dbo.Customers A 
JOIN Customer_Product B ON A.Customer_ID = B.Customer_ID
JOIN Products C ON C.Product_ID = B.Product_ID

这给出了这个输出:

我的问题是如何编写一个查询,而不是它当前给我的内容,它会给我一个看起来像这样的输出:

感谢您的所有帮助!我是 SQL 的新手,所以这里的答案对我来说并不是很突出,当前的代码似乎是我最接近我想要的。我意识到我需要使用 STUFF,但我不知道如何使用。我一直在看这个 post (how to get name from another table with matching id in another table?) 并试图用它为我工作,但运气不佳。

制作脚本你有一个CTE。然后,一旦将其定义为 CTE,就可以 运行 这个。

SELECT Customer_name,
      STUFF((
        SELECT ', ' + [Product They Own] 
        FROM CTE
        WHERE Customer_name= final.Customer_name
FOR XML PATH('')),1,1,'') AS [Products They Own] 
FROM CTE final
GROUP BY Customer_name