SQL; 数据更新;高手解决下.根据员工工龄给员工涨工资,1年工龄增加1个job_lvl,但不能超过该职位的最高level

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

鸿蒙传说
浏览 462回答 1
1回答

慕尼黑8549860

update a set 工龄增加后工资=case when jov_lvl+工龄>最大工资 then 最大工资 else jov_lvl+工龄 end
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server