请问下面的功能怎么用一个SQL语句来实现?

s_hluo 2007-03-12 08:13:08
假如表T有两列:
col1 col2
1 A
2 D
1 B
1 C
2 E


要得到如下结果:
col1 col2
1 ,A,B,C,
2 ,D,E,

请问该SQL语句该怎么写? 谢谢.
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
s_hluo 2007-03-13
  • 打赏
  • 举报
回复
非常感谢. :) 结贴
playwarcraft 2007-03-12
  • 打赏
  • 举报
回复
SQL2000的話建議寫function

create function fn_test(@col1 int)
returns varchar(50)
AS
begin
declare @str varchar(50)
set @str=''
select @str=@str+','+col2 from T where col1=@col1
set @str= @str+','
return @str
end

GO

select col1,dbo.fn_test(col1) as col2
from T
group by col1
mugua604 2007-03-12
  • 打赏
  • 举报
回复

--输出结果
/*
部门 人员
---- --------------
1 张三,李四,王五
2 赵六,邓七,刘八
mugua604 2007-03-12
  • 打赏
  • 举报
回复
create table 表(部门 int,人员 varchar(20))
insert into 表 select 1,'张三'
insert into 表 select 1,'李四'
insert into 表 select 1,'王五'
insert into 表 select 2,'赵六'
insert into 表 select 2,'邓七'
insert into 表 select 2,'刘八'
go

--创建用户定义函数
create function f_str(@department int)
returns varchar(8000)
as
begin
declare @ret varchar(8000)
set @ret = ''
select @ret = @ret+','+人员 from 表 where 部门 = @department
set @ret = stuff(@ret,1,1,'')
return @ret
end
go


--执行
select 部门,人员=dbo.f_str(部门) from 表 group by 部门 order by 部门
go
mugua604 2007-03-12
  • 打赏
  • 举报
回复

我用的是SQLServer2000表结构如下:
f1 f2 //列名
1 a
2 b
3 c
4 d
5 e
变换成:
a b c d e //列名
1 2 3 4 5




declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',max(case when f2='''+f2+''' then f1 end) as '+f2 from T group by f2

set @sql='select '+stuff(@sql,1,1,'')+' from T'
print @sql
exec(@sql)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧