sql问题,大家帮忙

newqq 2007-10-11 09:20:08
先看下面这个(有错误)
declare @i int
set @i=1
while (i<=(select max(igrade) from #aa))
begin
update #aa set 'g'+''+@i+''=ccode where igrade=''+@i+''
@i=@i+1
end
表中有g1,g2,g3.....字段
当@i=1时,我要修改g1的值,@i=2时,我要修改g2的值.....
大家帮我看看错在哪里
...全文
217 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ny-6000 2007-10-12
  • 打赏
  • 举报
回复
有人给就得有人要呀.
fa_ge 2007-10-11
  • 打赏
  • 举报
回复
sdhylj
青锋
等 级:
发表于:2007-10-11 09:52:2019楼 得分:0
呵呵,开始联络感情了.

-----------
青锋老兄,我和他以前是同事,刚去公司上班时,newzzq帮了我不少忙
newqq 2007-10-11
  • 打赏
  • 举报
回复
得润电子
不是软件公司,不过是上市公司:),要忙了,晚点聊
newqq 2007-10-11
  • 打赏
  • 举报
回复
我们以前是同事
青锋-SS 2007-10-11
  • 打赏
  • 举报
回复
呵呵,开始联络感情了.
wgzaaa 2007-10-11
  • 打赏
  • 举报
回复
sorry ,我的exec(@sql)本来是要放到end 后的
fa_ge 2007-10-11
  • 打赏
  • 举报
回复
我还没有申请MSN,你的我记下了.
你现在在哪做事?是在软件公司吗
newqq 2007-10-11
  • 打赏
  • 举报
回复
呵呵,有日子混也不错阿
加我的MSN:newzzq@126.com
newqq 2007-10-11
  • 打赏
  • 举报
回复
到此结贴
fa_ge 2007-10-11
  • 打赏
  • 举报
回复
我都整天没事做,哎,混日子.
newqq 2007-10-11
  • 打赏
  • 举报
回复
问题已经解决,多谢兄弟们
wgzaaa 2007-10-11
  • 打赏
  • 举报
回复
declare @i int,@maxi int,@sql varchar(8000)
select @i=1,@sql='',@maxi=max(igrade) from #aa
while (@i<=@maxi)
begin
set @sql=@sql+' update #aa set g'+rtrim(@i)+'=ccode where igrade='+rtrim(@i)
exec(@sql)
set @i=@i+1
end
dawugui 2007-10-11
  • 打赏
  • 举报
回复
--不好意思,少写了个as

declare @i as int
declare @j as int
declare @sql as varchar(100)
set @i=1
select @j = max(igrade) from #aa
while @i <= @j
begin
set @sql = 'update #aa set g ' + cast(@i as varchar) + '=ccode where igrade= ' + cast(@i as varchar)
exec(@sql)
set @i = @i + 1
end

如果igrade是字符串型
set @sql = 'update #aa set g ' + cast(@i as varchar) + '=ccode where igrade= ' ' ' + cast(@i as varchar) + ' ' '
newqq 2007-10-11
  • 打赏
  • 举报
回复
亮亮,最近好忙
newqq 2007-10-11
  • 打赏
  • 举报
回复
上面问题解决,产生新问题
code是其中的一个字段
上面的语句得到的code如下
update #aa set g3=code where igrade= 3
code 应该是字段code的值
fa_ge 2007-10-11
  • 打赏
  • 举报
回复
青青,你都好久没来了吧.
newqq 2007-10-11
  • 打赏
  • 举报
回复
谢谢大家,方法都差不多,不过还有一个问题
declare @i int
declare @sql varchar(1000)
set @i=1
set @sql=''
while (@i<=(select max(igrade) from #aa))
begin
set @sql= 'update #aa set g '+cast(@i as varchar)+ '=code where igrade= '+cast(@i as varchar)
exec(@sql)
set @i=@i+1
end
----max(igrade)=4
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '1' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '2' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '3' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '4' 附近有语法错误。

dawugui 2007-10-11
  • 打赏
  • 举报
回复
看下面这个(有错误)
declare @i int
set @i=1
while (i <=(select max(igrade) from #aa))
begin
update #aa set 'g '+ ' '+@i+ ' '=ccode where igrade= ' '+@i+ ' '
@i=@i+1
end
表中有g1,g2,g3.....字段
当@i=1时,我要修改g1的值,@i=2时,我要修改g2的值.....
大家帮我看看错在哪里
------------------------
declare @i int
declare @j int
declare @sql as varchar(100)
set @i=1
select @j = max(igrade) from #aa
while @i <= @j
begin
set @sql = 'update #aa set g' + cast(@i as varchar) + '=ccode where igrade=' + cast(@i as varchar)
exec(@sql)
set @i = @i + 1
end

如果igrade是字符串型
set @sql = 'update #aa set g' + cast(@i as varchar) + '=ccode where igrade=''' + cast(@i as varchar) + '''

chuifengde 2007-10-11
  • 打赏
  • 举报
回复
while 后面应该是@i<=
kk19840210 2007-10-11
  • 打赏
  • 举报
回复
declare @i int
set @i=1
while (i <=(select max(igrade) from #aa))
begin
exec('update #aa set'+ 'g '+cast(@i as varchar(10))+'=ccode where igrade='''+'cast(@i as varchar(10)) ''' )
set @i=@i+1
end
加载更多回复(3)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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