- UID
- 8591181
- 阅读权限
- 20
- 帖子
- 4515
- 精华贴数
- 2
- 技术排名
- 331
- 技术积分
- 6215
- 社区排名
- 449
- 社区积分
- 5310
- 注册时间
- 2007-1-5
- 精华贴数
- 2
- 技术积分
- 6215
- 社区积分
- 5310
- 注册时间
- 2007-1-5
- 论坛徽章:
- 11
|
-有表t,其数据如下:
a b
1 1
1 2
1 3
2 1
2 2
3 1
--如何转换成如下结果:
a b
1 1,2,3
2 1,2
3 1
create table tb
(
a int,
b int
)
insert into tb(a,b) values(1,1)
insert into tb(a,b) values(1,2)
insert into tb(a,b) values(1,3)
insert into tb(a,b) values(2,1)
insert into tb(a,b) values(2,2)
insert into tb(a,b) values(3,1)
go
--创建一个合并的函数
create function f_hb(@a int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(b as varchar) from tb where a = @a
set @str = right(@str , len(@str) - 1)
return(@str)
End
go
--调用自定义函数得到结果:
select distinct a ,dbo.f_hb(a) as b from tb
drop table tb
--结果
a b
----------- ------
1 1,2,3
2 1,2
3 1
行列转换只需借助函数即可 |
|