更正如下:谢谢!!ID NAME
030157 AA
030157 BB
030157 CC
030159 aa
030159 bb
030150 QQID NAME
030157 AA,BB,CC
030159 aa,bb
030150 QQ
030157 AA
030157 BB
030157 CC
030159 aa
030159 bb
030150 QQID NAME
030157 AA,BB,CC
030159 aa,bb
030150 QQ
解决方案 »
- 求助,如何查询指定多条记录的前一条,后一条记录
- SQL SERVER2005 两个结构相同的表如何查询两个表间的差集?
- 这两个语句有什么区别
- 函数中的表级变量问题,斑竹帮忙!!!
- 存储过程中,如何判断插入成功
- 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K?
- SQL server2000安装的问题,急!
- sqlserver连接的问题!急
- 怎样用sql语句取符合条件的第100条到120条记录(如:select...)
- 我想学习,用c作informix/SCO开发,蛋不知道从何下手,请大虾指教~~~~~~
- 一个简单查询问题?求教
- 紧急求助 sql server的安装
好象写过很多了!你查找一下!!
select * into #t from 表 order by id
set @s=''
set @i=0
update #t
set @s=case when @i=id then @s+','+name
else name end
@i=id,id=@i,name=@s
select id,max(name) as name from #t
group by id
drop table #t
create function f_str(
@id varchar(10)
)returns varchar(8000)
as
begin
declare @r varchar(8000)
select @r=@r+','+rtrim(Name)
from 表
where id=@id
return(stuff(@r,1,1,''))
end
go--调用函数实现查询
select id,name=dbo.f_str(id)
from 表 group by id
@id varchar(20)
)
returns varchar(200)
as
begin
declare @r varchar(200)
set @r=''
select @r=@r+','+rtrim(name) from tablename where id=@id
if @r<>'' set @r=stuff(@r,1,1,'')
return @r
end
go--查询
select id,dbo.fn_name(id) as name
from tablename
group by id
create table tb(id varchar(20),name varchar(15))
insert tb values('20030157' ,'AAA' )
insert tb values('20030157', 'BBB' )
insert tb values('20030157' , 'CCC' )
insert tb values('20030159' ,'aaa' )
insert tb values('20030159' ,'bbb' )
insert tb values('20030150' ,'QQQ' )declare @s varchar(8000),@i varchar(20)
select * into #t from tb
set @s=''
set @i=''
update #t
set @s=case when @i=id then @s+','+name
else name end,
@i=id,id=@i,name=@s
select id,max(name) as name from #t
group by id
drop table #t,TB
--结果:
id name
-------------------- ---------------
20030150 QQQ
20030157 AAA,BBB,CCC
20030159 aaa,bbb(所影响的行数为 3 行)