2014-02-28 52 views
2

我有一个公司,行业和company_industry_map多对多表。SQL Server将结果以逗号分隔列表

company_id | company_name 
1   Goldman Sachs 
2   Microsoft 

industry_id | industry 
4    Technology 
5    Finance 
6    Banking 

company_id | industry_id 
1   5 
1   6 
2   4 

我想编写一个连接所有的行业为逗号分隔的列表这样的查询:

company_id | industries 
1   Finance, Banking 
2   Technology 

这里是我的,我想写通用查询:

SELECT company_id, 
     xxx AS industries 
    FROM company c, 
     company_industry_map m 
WHERE c.company_id = m.company_id 
+0

你使用了哪个数据库? SQL服务器,MySQL等 –

+0

我正在使用SQL Server –

+1

你可以看看这个:http://stackoverflow.com/questions/8700961/using-coalesce-function-to-make-values-separated-with-commas –

回答

6

你可以在SQL Server中使用类似这样的东西

select co.CompanyID, AllIndustries = 
     (select (cast(industry as varchar(200))+',') as [text()] 
     FROM company c, 
     company_industry_map m 
     WHERE c.company_id = m.company_id and c.company_id = co.company_id 
     order by industry_id for XML PATH('')) 
from Companies co 
0

在SQL Server中,你可以创建这样一个功能:

declare @var nvarchar(max) 

set @var = '' 
select @var = @var + ',' + UserLogin from [user] 

select @var