我有数据:
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
答案 0 :(得分:2)
在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
答案 1 :(得分:0)
在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