0

可能重复:
在 MS SQL Server 2005 中模拟 group_concat MySQL 函数?

我有两张桌子,即ServiceEntryPartPart。一个服务条目可以有多个部分。我想要做的是为同一个服务条目连接不同的部分。我正在寻找的最后一个条目是如下所示"

 ServiceEntryID     PartDescription
       3            2 ~ xyz Manager | 3 ~ Elevator

在 Column Part Description 中,不同的部件 id 连接在一列中,方法是先使用部件 id,后跟 tilda,部件描述,后跟管道字符,并且 serviceentry 部分中不同部件的格式相同。任何帮助都将不胜感激。谢谢

请在下面找到结构

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
4

3 回答 3

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
于 2012-07-19T22:11:58.013 回答
0

在下一个 url 中,您可以找到许多方法来完成这项工作,我建议您使用该教程中描述的 blackbox XML 方法,这是最简单的方法。

在 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
于 2012-07-19T22:11:49.680 回答
0

http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

于 2012-07-19T22:04:01.823 回答