2012-04-07 43 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參數函數來傳入分隔符。

相關問題