注册 登录
编程论坛 SQL Server论坛

字符串连接问题

棉花糖ONE 发布于 2006-11-13 16:27, 520 次点击
tab1
c1 c2
--- ---
001 a
001 b
001 c
002 a
002 b
003 b
...
现在想实现如下的格式
c1 c2
--- ---
001 a,b,c
002 a,b
003 b
不能用循环和函数
7 回复
#2
LouisXIV2006-11-13 17:41
不能用函数?

2005可以, 2000不行
#3
棉花糖ONE2006-11-13 19:53
2005的写出来一下.麻烦斑竹了
#4
LouisXIV2006-11-14 08:42
忘了,2005也不行, 行列转换2005可以写简单点

这样的问题必须用函数解决
#5
小水滴2006-11-14 09:36
参考这个例子:
create table csdn(id char(10),txt varchar(10))
insert csdn
select 'A','AA1' union all
select 'A','AA2' union all
select 'B','BB1' union all
select 'B','BB2'
go

create function Gettxt(@id char)
returns varchar(8000)
as
begin
declare @s varchar(8000)
set @s=''
select @s=@s +',' +txt from csdn where id=@id
--return @s
return stuff(@s,1,1,'')
end
go

select id,dbo.Gettxt(id) txt from csdn group by id
go
#6
棉花糖ONE2006-11-14 13:04
谢了两位,连斑竹都说不用函数不行,那我也放弃了
#7
潇洒老乌龟2006-11-14 15:59

不用函数肯定不行.

SQL语句之合并行列转换

  有表rowtocol,其数据如下:
  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 function f_rowtocol(@a int)
  returns varchar(8000)
  as
  begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(b as varchar) from rowtocol where a = @a
set @str = right(@str , len(@str) - 1)
return(@str)
  End
  go


  调用自定义函数得到结果:
  select distinct a ,dbo.f_rowtocol(a) from rowtocol

#8
Web2006-11-14 23:41
有进步```谢拉``
1