SQL将两个表中多行的数据合并为一行

时间:2012-10-21 12:01:58

标签: sql sql-server

我有一个成员系统中两个表的数据如下:

Table: listuser
userid  listid
===========
1       5
1       8
1       3
2       5
2       3
3       4
4       4
5       3
6       4

Table: list
id  name
==============
3   Members
4   Non Members
5   Subscribers
8   Test

我想要达到的结果如下:

userid  lists
===================
1       Members, Subscribers, Test,
2       Members, Subscribers
3       Non Members,
4       Non Members,
5       Members,
6       Non Members,

用户可以属于0到n个列表。 我已经尝试了很多方法,但总是最终有多行用于userid,这是我想要消除的。我会非常满意地提供一些帮助。

1 个答案:

答案 0 :(得分:3)

试试这个。它会帮助你

SELECT DISTINCT lu2.userid,(
SELECT ISNULL(l1.name, '') + ', '
FROM dbo.listuser lu1 JOIN dbo.list l1 ON lu1.listid = l1.id
WHERE lu1.userid = lu2.userid 
FOR XML PATH('')) AS name
FROM dbo.listuser lu2
ORDER BY lu2.userid

SQL Fiddle

上的示例