日期:2014-05-18  浏览次数:20446 次

SQL根據月份更新問題
表A如下:
-------------------------
ID                 cost
C4096A          
Q2612A          

表B如下:
------------------------
ID                   1月       2月
C4096A           310       320
Q2612A           190       200

問題如下:
如何更新A表里的cost字段,條件要根據當日的月份來更新。
例子:
假如當月是一月的時候,更新結果如下:
ID               cost
C4096A         310
Q2612A         190

------解决方案--------------------
用动态语句吧
--建立测试数据
create table b(id varchar(10),[1月] int,[2月] int)
insert into b select 'C4096A ',310,320
union all select 'Q2612A ',190,200

create table a(id varchar(10),cost int)
insert a select 'C4096A ',0
union all select 'Q2612A ',0

--根据当前月份更新数据
declare @colname varchar(100)
set @colname=col_name(OBJECT_ID( 'b '),datepart(m,getdate())+1)
exec( 'update a set cost=c.cc from a,(select id,cc=[ '+@colname+ '] from b) c where a.id=c.id ')

--删除测试数据
drop table a,b