SQL Server CSV на строку - PullRequest
       12

SQL Server CSV на строку

1 голос
/ 22 ноября 2011

У меня есть данные типа:

StudentID | Course
1         | .NET
1         | SQL Server
1         | Ajax
2         | Java
2         | JSP
2         | Struts

Я хочу, чтобы запрос получил выходные данные, как показано ниже.

StudentID | Course
    1     | .NET, SQL Server, Ajax
    2     | Java, JSP, Struts

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

В SQL Server 2005+ самым простым способом является использование трюка FOR XML:

SELECT StudentID, STUFF((SELECT ',' + Course
                         FROM table t1
                         WHERE t1.StudentID = t.StudentID
                         FOR XML PATH('')), 1, 1, '')
FROM table t
0 голосов
/ 22 ноября 2011

В SQLServer2000 + вы можете использовать следующие

create table tbl (StudentID int, course varchar(10))

insert into tbl values (1,'.NET'),(1, 'SQL Server'), (1,  'Ajax'),(2,'Java'),(2,'JSP'),(2,'Struts')

GO

CREATE FUNCTION dbo.GetCourses(@id INTEGER)
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @Result VARCHAR(MAX)
SET @Result = ''
SELECT @Result = @Result +  [course] + ' ' FROM tbl WHERE StudentID = @id
RETURN RTRIM(@Result)
END
GO

SELECT DISTINCT StudentID, dbo.GetCourses(StudentID) FROM tbl
GO

drop table tbl
drop function  dbo.GetCourses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...