update a
set a.job_lvl=case when a.job_lvl+age1>b.job_lvl then b.job_lvl else a.job_lvl+age1 end
From (select emp_id,job_id,job_lvl,
case when dateadd(year,datediff(year,hire_date,getdate()),hire_date)>hire_date
then datediff(year,hire_date,getdate()) else datediff(year,hire_date,getdate())-1 end age1, hire_date
from employee) a,(select job_id,max(job_lvl) job_lvl from employee group by job_id) b
where a.job_id=b.job_id
这个更新结果,与题目要求结果不一样,下面附查询结果,这个需要加什么条件(如 第一行,最大工资是100了,更新数据后 工龄增加后工资 依然是 最大工资100,第二行;而没有超过最大工资 更新数据后 工龄增加后工资为244)
job_lvl emp_id 工龄 最大工资 工龄增加后工资
100 PSA89086M 19 100 119
225 VPA30890F 19 225 244
100 H-B39728F 20 100 120
200 L-B31947F 19 200 219
250 F-C16315M 19 250 269
250 PTC11962M 20 250 270
165 A-C71970F 18 165 183
225 AMD15433F 19 225 244
175 ARD36773F 17 175 192
update a set 工龄增加后工资=case when jov_lvl+工龄>最大工资 then 最大工资 else jov_lvl+工龄 end