create table t
(id varchar(3),id1 varchar(2),id2 varchar(2))insert t
select '001','a','b' union all
select '001','c','d' union all
select '002','e','f' union all
select '003','g','h'
gocreate function f_union(@id varchar(3))
returns varchar(30)
as
begin
declare @sql varchar(30)
set @sql=''
select @sql=@sql+','+id1+' '+id2 from t where id=@id
return(stuff(@sql,1,1,''))
end
goselect id,dbo.f_union(id) as field from t group by id drop function f_union
drop table tid field
---- ------------------------------
001 a b,c d
002 e f
003 g h(所影响的行数为 3 行)
(id varchar(3),id1 varchar(2),id2 varchar(2))insert t
select '001','a','b' union all
select '001','c','d' union all
select '002','e','f' union all
select '003','g','h'
gocreate function f_union(@id varchar(3))
returns varchar(30)
as
begin
declare @sql varchar(30)
set @sql=''
select @sql=@sql+','+id1+' '+id2 from t where id=@id
return(stuff(@sql,1,1,''))
end
goselect id,dbo.f_union(id) as field from t group by id drop function f_union
drop table tid field
---- ------------------------------
001 a b,c d
002 e f
003 g h(所影响的行数为 3 行)
解决方案 »
- 请教一个关于事务的问题
- reporting server 订阅 远程smtp配置
- 我用not exists 失败,不知道原因,请高人帮忙改一下我的查询,非常感谢
- 急急急:一个表中如何删除某些字段相同的记录!!求SQL语句。
- 关于数据导出的问题,请大家帮忙!急急
- 很简单游标问题
- sql server 2000 打开表 就报 “在执行该操作期间发生错误” 急~~高手帮吗啊。 挺说这里高手多 怎么没看到啊
- 如何列出一个数据库中用户自已建产表?
- 请问SQL SERVER区分大小写吗
- 这句SQL语句怎么写?
- 我在SQL Server Management Studio通过 Windows信任连接 进去后 新建的数据库用户怎么不能连接数据库啊?
- case在where里面怎么写啊?
create table tb1([id]varchar(10),id1 varchar,id2 varchar)
insert into tb1
select '001','a','b'union all
select '001','c','d'union all
select '002','e','f'union all
select '003','g','h'
go--写个函数将所有相同ID的id1和id2变成一个字符串
create function funcIDToString(
@ID varchar(10)
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+cast(id1+' '+id2 as varchar)
from tb1
where [ID]=@ID
return(stuff(@r,1,1,''))
end
go--调用实现查询
select distinct [id],Field=dbo.funcIDToString([id])from tb1--删除自定义函数和演示表
drop table tb1
drop function dbo.funcIDToString
/*
id Field
------ -------------
001 a b,c d
002 e f
003 g h(所影响的行数为 3 行)
*/