我有三张桌子。
1st Table被称为Customer,其中包含以下虚拟信息:
第二个表名为Customer_Product,其中包含以下虚拟信息:
第3个表名为Products,其中包含以下虚拟信息:
图表看起来像这样:
我目前有这样的代码:
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,但我不明白怎么做。我一直在看这篇文章(how to get name from another table with matching id in another table?)并尝试用它为我工作,但运气不佳。
答案 0 :(得分:1)
使脚本具有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