日期:2014-05-19  浏览次数:20533 次

这种SQL语句怎么写?把不同记录中的内容显示在同一字段
我现在有这种表格:
序号       学校     考场       人数
1             浙江       1             10
2             浙江       2             20
3             江苏       1             10
4             山东       1             10

希望出现如下效果   就是把各个考场的人数放在人数字段已逗号分隔,谢谢!
学校         人数
浙江         10,20  
江苏         10
山东         10

------解决方案--------------------
--合併
Create Table TEST
(序号 Int,
学校 Nvarchar(10),
考场 Int,
人数 Int)
Insert TEST Select 1, N '浙江 ', 1, 10
Union All Select 2, N '浙江 ', 2, 20
Union All Select 3, N '江苏 ', 1, 10
Union All Select 4, N '山东 ', 1, 10
GO
Create Function F_TEST(@School Nvarchar(10))
Returns Varchar(8000)
As
Begin
Declare @S Varchar(8000)
Select @S = ' '
Select @S = @S + ', ' + Rtrim(人数) From TEST Where 学校 = @School
Select @S = Stuff(@S , 1, 1 , ' ')
Return @S
End
GO
Select
学校,
dbo.F_TEST(学校) As 人数
From
TEST
Group By 学校
Order By Min(序号)
GO
Drop Table TEST
Drop Function F_TEST
--Result
/*
学校 人数
浙江 10,20
江苏 10
山东 10
*/