update的值取决于另外一个表
表A字段:UpdateTime
表B字段: Holiday
表B中有多条Holiday
declare @AddDays int
更新的值A: select Count(*) from 表B where Holiday>UpdateTime and Holiday<CONVERT(varchar, DATEADD(DD,@AddDays,UpdateTime),23)
需要更新的值B=A+@AddDays
update 表A set UpdateTime=CONVERT(varchar, DATEADD(DD,需要更新的值B,UpdateTime),23)
大概的意思就是从Holiday中查出>UpdateTime and <UpdateTime+@AddDay的记录条数,然后再加上@AddDay,更新表A的UpdateTime
[解决办法]
我觉得用不用连接用关联就可以拉。
下面是我做的测试。
if OBJECT_ID('a') is not null
drop table a
if OBJECT_ID('b') is not null
drop table b
go
create table a(updatetime date)
create table b(holiday date)
insert into a values('2013-05-03'),
('2013-05-26'),
('2013-07-08')
insert into b values('2013-05-05'),
('2013-05-28'),
('2013-05-26'),
('2013-05-29'),
('2013-06-15'),
('2013-08-10')
select * from a
declare @adddays int=5
update a set updatetime=
DATEADD(dd,(select COUNT(1) from b where holiday>a.updatetime and holiday<dateadd(dd,@adddays,a.updatetime)),
updatetime) from a
select * from a
/*
updatetime
----------
2013-05-03
2013-05-26
2013-07-08
updatetime
----------
2013-05-04
2013-05-28
2013-07-08
*/