2012-04-07 58 views
0
取值时

可能重复:
Concatenate values based on 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

+2

所以你想让你的工作为你完成? – 2012-04-07 07:02:20

+0

根据您使用的DBMS有不同的解决方案。你用什么? SQL Server,Oracle,MySQL,SQLite,PostgreSQL或者其他的东西? – 2012-04-07 07:05:52

+0

Ms Sql server 2008 – Rachit 2012-04-07 07:30:10

回答

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

相关问题