从两个不同的表中获取值时,将行连接成单个列

时间:2012-04-07 07:00:31

标签: sql-server sql-server-2008

  

可能重复:
  Concatenate values based on ID

我有两张桌子

table1 包含

pkUserSubjectid  UserId  fkSubjectId
   15              146     1
   16              146     2
   17              146     4
   18              147     1
   19              147     3
   20              148     1
   21              148     3
   22              149     1
   23              149     3 

表2 包含

pkSubjectId   SubjectName
      1        Maths
      2        English
      3        Physics
      4        Chemistry
      5        Computer 

我希望我的结果采用这种格式

 UserId     SubjectName
   146       Maths, English, Chemistry
   147       Maths, Physics

等等

请告诉我SQL中的任何查询

1 个答案:

答案 0 :(得分:0)

考虑构建clr聚合函数。 msdn示例函数适用于此。

http://msdn.microsoft.com/en-us/library/ms131056(v=sql.100).aspx

然后您可以执行类似

的操作
SELECT a.[UserId], dbo.MyAgg(b.[SubjectName]) as [SubjectName] 
FROM table1 as a 
LEFT OUTER JOIN table2 as b ON a.[fkSubjectId] = b.[pkSubjectId] 
GROUP BY a.[UserId] 

该示例使用单个参数并使用“,”作为分隔符。您还可以创建2参数函数,如第二个示例中所示,以传入分隔符。