从一个表中选择子选择concat行作为结果

时间:2014-03-04 00:49:28

标签: sql

我正在从两个表的查询中查找此结果。希望将第二个表中的结果合并为一列。 (TXM,TRD)。我的大脑忘记了如何在MS Sql中执行此操作:

**FirstName LastName Training**
  Tom       Smith    TXM, TRD


**Table 1**
Id FirstName LastName
1  Tom        Smith

**Table 2**
UserId   Training
1        TXM
1        TRD

提前感谢您的协助。

1 个答案:

答案 0 :(得分:1)

您正在寻找STUFF-FOR XML PATH('')技巧:

SELECT FirstName, LastName,
    STUFF((SELECT ', ' + Training 
           FROM [Table 2] t2 
           WHERE t2.UserId = t1.Id 
           FOR XML PATH('')), 1, 2, '') AS Training
FROM [Table 1] t1

FOR XML PATH('')从结果集创建一个连接字符串,STUFF替换前两个字符,删除额外的逗号和空格。

不要忘记子查询必须括在一对括号中。