使用STUFF为了获得SQL中的多个元素到一个块中
问题描述:
我有三个表。使用STUFF为了获得SQL中的多个元素到一个块中
1日表被称为这个假信息的客户在它:
第二个表称为Customer_Product这个假信息在它:
第三表被称为带有此虚拟信息的产品:
而图如下所示:
目前,我有这个代码,我写道:
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
这给出了这样的输出:
我的问题是如何c在我写一个查询,而不是什么它目前给我,那就给我一个输出看起来像这样:
谢谢你的任何及所有的帮助!我是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
非常感谢! – JDawg848