2011-11-11 54 views
-1

可能重复:
Combine multiple results in a subquery into a single comma-separated valueSQL Server查询返回的逗号分隔值

我有一个返回一个人对象和需要也返回一个组织列包含逗号分隔查询组织名单。我当前的查询是以下:

SELECT 
p.PersonID, 
p.Title, 
p.FirstName, 
p.LastName, 
p.DateOfBirth, 
p.EmailAddress, 
p.MobileNumber, 
p.EntityID, 
(SELECT o.Name FROM Entities.Organisations o 
    JOIN Entities.OrganisationPeople op ON o.OrganisationID = op.OrganisationID  AND op.PersonID = p.PersonID) AS 'Organisations' 
    FROM 
Entities.People p 

这是罚款当有连接到一个人一个组织,但是我还不如干脆做一个标准的加入。我想用逗号分隔的列表在组织列中返回可能多于一个的结果。

这甚至可能吗?

+0

使用也有一些想法在http: //stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-ms-sql-server-2005 –

+0

和http://stackoverflow.com/questions/2046037/sql-server-can-i-comma-delimit-multiple-rows-into-one-column –

回答

0

here,这里有一个例子:

1.创建UDF

CREATE FUNCTION CombineValues 
(
@F_ID INT --The foreign key from TableA which is used to fetch corresponding records 
) 
RETURNS VARCHAR(8000) 
AS 
BEGIN 
DECLARE @SomeColumnList VARCHAR(8000); 

SELECT @SomeColumnList = COALESCE(@SomeColumnList + ', ', '') + CAST(SomeColumn AS varchar(20)) 
FROM TableB C 
WHERE C.FK_ID = @FK_ID; 

RETURN 
(
SELECT @SomeColumnList 
) 
END 

2.子查询

SELECT ID, Name, dbo.CombineValues(FK_ID) FROM TableA