两表动态列更新问题

wea1978 2006-05-15 05:57:42
有两个表
tab1与tab2
tab1是固定列;
tname ,01,02,03,05,05,06...直到当月月底
tab2是动态列:
tname ,01,02,05,10,11,12,13,14,20
把tab2.tname =tab1.tname 的01,02,05,10,11,12,13,14,20插入到tab1对应列...

请各位大侠指教,谢谢!
...全文
196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wea1978 2006-05-16
  • 打赏
  • 举报
回复
谢谢楼上几位!
Haiwer(海阔天空)的正解...
昵称被占用了 2006-05-16
  • 打赏
  • 举报
回复
Tab2临时表,如#Tab2

declare @sql varchar(8000)

set @sql=''
select @sql=@sql+'['+name+']=x.['+name+'],'
from tempdb..syscolumns
where id=object_id('tempdb..#Tab2')
and name<>'tname'
set @sql=left(@sql,len(@sql)-1)

exec ('update Tab1 set '+@sql+' from Tab1 a,#Tab2 x where a.tname=x.tname')
wuaza 2006-05-15
  • 打赏
  • 举报
回复
收藏。
wea1978 2006-05-15
  • 打赏
  • 举报
回复
临时表不在系统表中吧?
steelmqb1 2006-05-15
  • 打赏
  • 举报
回复
从系统表中取数据
wea1978 2006-05-15
  • 打赏
  • 举报
回复
或者有其中一个是临时表,一个是实体表,两种情况都有
wea1978 2006-05-15
  • 打赏
  • 举报
回复
谢谢楼上各位!
再请问一下:
如果它们是临时表呢?
会飞的小洋洋 2006-05-15
  • 打赏
  • 举报
回复
学习
昵称被占用了 2006-05-15
  • 打赏
  • 举报
回复
declare @sql varchar(8000)

set @sql=''
select @sql=@sql+'['+name+']=x.['+name+'],'
from syscolumns
where id=object_id('Tab2')
and name<>'tname'
set @sql=left(@sql,len(@sql)-1)

exec ('update Tab1 set '+@sql+' from Tab1 a,Tab2 x where a.tname=x.tname')

liangpei2008 2006-05-15
  • 打赏
  • 举报
回复
向libin_ftsafe(子陌红尘)学习
子陌红尘 2006-05-15
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',['+name+']=b.['+name+']' from syscolumns where id=object_id('tab2') and name!='tname'
set @sql='update a set '+stuff(@sql,1,1,'')+' from tab1 a,tab2 b where a.tname=b.tname'
print @sql
exec(@sql)

34,590

社区成员

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

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