使用STUFF为了获得SQL中的多个元素到一个块中

使用STUFF为了获得SQL中的多个元素到一个块中

问题描述:

我有三个表。使用STUFF为了获得SQL中的多个元素到一个块中

1日表被称为这个假信息的客户在它:

enter image description here

第二个表称为Customer_Product这个假信息在它:

enter image description here

第三表被称为带有此虚拟信息的产品:

enter image description here

而图如下所示:

enter image description here

目前,我有这个代码,我写道:

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 

这给出了这样的输出:

enter image description here

我的问题是如何c在我写一个查询,而不是什么它目前给我,那就给我一个输出看起来像这样:

enter image description here

谢谢你的任何及所有的帮助!我是SQL新手,所以这里的答案并不是真正突出的,当前的代码是我看起来能够达到我想要的最接近的代码。我意识到我需要使用东西,但我不明白如何。我一直在看这篇文章(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 
+0

非常感谢! – JDawg848