sql server 2008用游标把查询结果从多行变成1行
存储过程:ALTERprocedure[dbo].[pat_master_index111]@Schar(10),@Pchar(50),@Ctdate,@Lints是性别...
存储过程:
ALTER procedure [dbo].[pat_master_index111]
@S char(10), @P char(50),@Ct date,@L int s是性别,p是地方,Ct是时间,L是手机号码长度
as
declare @i int,@q varchar(100)
select top 100 NAME+INP_NO from PAT_MASTER_INDEX
where SEX=@S and BIRTH_PLACE =@P and CREATE_DATE >@Ct and LEN(PHONE_NUMBER_BUSINESS)=@L
调用:
exec pat_master_index111 '男','山东省东营市','2011-01-01','11'
结果:
我想把结果变成 : name+inp_no,me+inp_no,me+inp_no,me+inp_no。。。 展开
ALTER procedure [dbo].[pat_master_index111]
@S char(10), @P char(50),@Ct date,@L int s是性别,p是地方,Ct是时间,L是手机号码长度
as
declare @i int,@q varchar(100)
select top 100 NAME+INP_NO from PAT_MASTER_INDEX
where SEX=@S and BIRTH_PLACE =@P and CREATE_DATE >@Ct and LEN(PHONE_NUMBER_BUSINESS)=@L
调用:
exec pat_master_index111 '男','山东省东营市','2011-01-01','11'
结果:
我想把结果变成 : name+inp_no,me+inp_no,me+inp_no,me+inp_no。。。 展开
展开全部
假设初始表就是你的查询结果设定为A(Name_Id varchar(100))
你是要把所有行转换为一列,尝试这样:
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',max(case when Name_Id='''+Name_Id+''' then Name_Id else '''' end) as '''
+Name_Id+'''' from A
set @sql=stuff(@sql,1,1,'')
exec('select '+@sql+' from A')
追问
http://zhidao.baidu.com/question/134675750164753165.html
你看看这个问题 ,有数据。 你看能解决下吗?
追答
ALTER procedure [dbo].[pat_master_index111]
@S char(10), @P char(50),@Ct date,@L int
--s是性别,p是地方,Ct是时间,L是手机号码长度
as
begin
declare @i int,@q varchar(100)
declare @sql varchar(8000)
set @sql=''
declare @Name_Id varchar(100)
declare cur cursor for
select top 100 NAME+INP_NO from PAT_MASTER_INDEX
where SEX=@S and BIRTH_PLACE =@P and CREATE_DATE >@Ct and LEN(PHONE_NUMBER_BUSINESS)=@L
open cur
fetch next from cur into @Name_Id
while @@fetch_status=0
begin
set @sql=@sql+','+@Name_Id
fetch next from cur into @Name_Id
end
close cur
deallocate cur
end
set @sql=stuff(@sql,1,1,'')
select @sql
END
展开全部
我比较喜欢用循环
ALTER procedure [dbo].[pat_master_index111]
@S char(10), @P char(50),@Ct date,@L int s是性别,p是地方,Ct是时间,L是手机号码长度
as
declare @i int,@q varchar(100),@next int,@name_id varchar(max)
create table #name_id (id int identity(1,1),name varchar(200))
insert into #name_id select top 100 NAME+INP_NO from PAT_MASTER_INDEX
where SEX=@S and BIRTH_PLACE =@P and CREATE_DATE >@Ct and LEN(PHONE_NUMBER_BUSINESS)=@L
set @next=1
while @next<=(select count(*) from #name_id)
begin
select @name_id=@name_id+name+',' from #name_id where id=@next
set @next=@next+1
end
select @name_id
drop table #name_id
ALTER procedure [dbo].[pat_master_index111]
@S char(10), @P char(50),@Ct date,@L int s是性别,p是地方,Ct是时间,L是手机号码长度
as
declare @i int,@q varchar(100),@next int,@name_id varchar(max)
create table #name_id (id int identity(1,1),name varchar(200))
insert into #name_id select top 100 NAME+INP_NO from PAT_MASTER_INDEX
where SEX=@S and BIRTH_PLACE =@P and CREATE_DATE >@Ct and LEN(PHONE_NUMBER_BUSINESS)=@L
set @next=1
while @next<=(select count(*) from #name_id)
begin
select @name_id=@name_id+name+',' from #name_id where id=@next
set @next=@next+1
end
select @name_id
drop table #name_id
更多追问追答
追答
select @name_id
drop table #name_id
改成
drop table #name_id
return @name_id
试一下,因为语句没测试,你再试下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询