可能重复:
Simulating group_concat MySQL function in MS SQL Server 2005?
我有两张表ServiceEntryPart
和Part
。一个服务条目可以有多个部分。我想要做的是连接相同服务条目的不同部分。我正在寻找的最后一项是“
ServiceEntryID PartDescription
3 2 ~ xyz Manager | 3 ~ Elevator
在“列部分描述”中,通过首先使用部件ID后跟tilda和部件描述,后跟管道字符以及serviceentry部件中不同部件的相同格式,将不同的部件ID连接在一列中。任何帮助都会得到满足。感谢
请找到下面的结构
dbo.ServiceEntryPart
ID ServiceEntryID PartID
266 2 1
234 3 2
234 3 3
233 5 4
dbo.Part
ID PartDescription
1 Sample Manager
2 xyz Manager
3 Elevator
答案 0 :(得分:1)
SELECT ServiceEntryID, PartDescription =
STUFF((SELECT ' | ' + CAST(b.ID AS NVARCHAR) + ' ~ ' + PartDescription
FROM Part b
INNER JOIN ServiceEntryPart c
ON c.PartId = b.ID
WHERE c.ServiceEntryID = a.ServiceEntryID
FOR XML PATH('')), 1, 3, '')
FROM ServiceEntryPart a
GROUP BY ServiceEntryID
答案 1 :(得分:0)
答案 2 :(得分:0)
在下一个网址中,您可以找到许多方法来完成这项工作,我建议您使用该教程中描述的黑盒XML方法,这是最简单的方法。
Concatenating Row Values in Transact-SQL
像这样......
SELECT dbo.ServiceEntryPart.ServiceEntryID,
( SELECT dbo.Part.ID + '~' + dbo.Part.PartDescription + ','
FROM dbo.Part
WHERE dbo.ServiceEntryPart.PartID = dbo.Part.ID
ORDER BY dbo.Part.ID
FOR XML PATH('') ) AS PartDescription
FROM dbo.ServiceEntryPart
GROUP BY dbo.ServiceEntryPart.ServiceEntryID