我有一个如下的产品表。我想创建一个sql,它将为我提供以分号分隔的产品名称。
ProductName AccountExpert
--------------------------
Tea JohnSmith
Banana GarySulvan
Water JohnSmith
Candy BobbySimmons
ConfecItem BobbySimmons
Bread JohnSmith
Soda JohnSmith
Sql输出应该是这样的
AccountExpert Products
-----------------------
JohnSmith Tea; Water; Bread; Soda
GarySulvan Banana
BobbySimmons Candy; ConfecItem
答案 0 :(得分:1)
如果您使用的是MySQL,请使用GROUPing和GROUP_CONCAT:
SELECT AccountExpert, GROUP_CONCAT(ProductName SEPARATOR '; ')
FROM ProductExperts
GROUP BY AccountExpert
答案 1 :(得分:1)
您可以尝试其中一些想法:
Simulating group_concat MySQL function in Microsoft SQL Server 2005?
总的来说,在SQL-Server 2008中没有一种非常优雅的方法来实现这一点
答案 2 :(得分:1)
使用MS SQL,您可以使用FOR XML,使用Stuff函数删除多余的分隔符。不幸的是,没有像MySQL一样的组连接功能。
CREATE TABLE #ProductExpert (ProductName nvarchar(20), AccountExpert nvarchar(20))
INSERT INTO #ProductExpert(ProductName, AccountExpert) SELECT
'Tea', 'JohnSmith' UNION ALL SELECT
'Banana', 'GarySulvan' UNION ALL SELECT
'Water', 'JohnSmith' UNION ALL SELECT
'Candy', 'BobbySimmons' UNION ALL SELECT
'ConfecItem', 'BobbySimmons' UNION ALL SELECT
'Bread', 'JohnSmith' UNION ALL SELECT
'Soda', 'JohnSmith'
SELECT DISTINCT
ae.AccountExpert,
Stuff((
SELECT
'; ' + p.ProductName
FROM
#ProductExpert AS p
WHERE
ae.AccountExpert = p.AccountExpert
ORDER BY
p.ProductName
FOR XML PATH('')
), 1, 2, '') AS Products
FROM
#ProductExpert AS ae
ORDER BY
ae.AccountExpert
DROP TABLE #ProductExpert
答案 3 :(得分:0)
请查看http://blog.namwarrizvi.com/?p=140
你想做什么,但用,
而不是