0

可能重复:
根据 ID 连接值

我有两张桌子

表 1包含

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 中的任何查询

4

1 回答 1

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 参数函数来传递分隔符。

于 2012-04-07T09:45:24.930 回答