日期:2014-05-18  浏览次数:20443 次

MS SQL 存储过程实现
表 tab A

id name value
1 100 a
2 100 b
3 200 c
4 200 d
5 300 e

要求得到结果

name valuelist
100 ab
200 bc
300 e

  求教, 用存储过程实现最好, 其他的也行.

------解决方案--------------------
use Tempdb
go
--> --> 
 
if not object_id(N'A') is null
drop table A
Go
Create table A([id] int,[name] int,[value] nvarchar(1))
Insert A
select 1,100,N'a' union all
select 2,100,N'b' union all
select 3,200,N'c' union all
select 4,200,N'd' union all
select 5,300,N'e'
Go
select 
Name,
valuelist=(select ''+value from A where Name=t.Name for xml path(''))
from A as t
GROUP BY Name
/*
Name valuelist
100 ab
200 cd
300 e
*/