以下是一个存储过程的一部分是不完整的,希望高人指点一下。现在update一个临时表中一个字段,要求为临时表中的一个字段(人员编号)关联流水表中(执行力得分)一个字段(人员编号 )并通过输入的(开始时间和结束时间)以及人员编号相同为条件把所有关联数据中日期最大值的“执行力状态状态”放在临时表,如何写?
update #执行力查询Temp
set #执行力查询Temp.状态=执行力得分.执行力状态
from 执行力得分
where #执行力查询Temp.人员编号=执行力得分.人员编号 and 执行力得分.日期 between @beginDate and (Select top 1 执行力得分.日期 from 执行力得分 where 执行力得分.日期 between @beginDate and @endDate order by 日期 desc)
非常感谢!
------解决方案--------------------
可以用output子句实现,
-- 建临时表
create table #临时表(执行力状态 [数据类型])
update a
set a.状态=b.执行力状态
output inserted.执行力状态 into #临时表
from #执行力查询Temp a,执行力得分 b
where a.人员编号=b.人员编号
and b.日期 between @beginDate
and (Select top 1 日期
from 执行力得分
where 执行力得分.日期 between @beginDate and @endDate
order by 日期 desc)
-- 结果
select 执行力状态 from #临时表
-- 执行力状态最大值
select max(执行力状态) from #临时表
------解决方案--------------------
"inner join [执行力得分] as b on b.[人员编号]=b.[人员编号]"寫錯了,
update a
set [状态]=b.[执行力状态]
from #执行力查询Temp as a
inner join [执行力得分] as b on b.[人员编号]=a.[人员编号]
and b.[日期]=(select max(x.[日期])
from [执行力得分] x
where x.[人员编号]=b.[人员编号]
and x.[日期] between @beginDate and @endDate
)