为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

鸿蒙传说 2018-12-07 11:11:01
update aset    a.job_lvl=case when a.job_lvl+age1>b.job_lvl then b.job_lvl else a.job_lvl+age1 endFrom   (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) bwhere a.job_id=b.job_id 这个更新结果,与题目要求结果不一样,下面附查询结果,这个需要加什么条件(如 第一行,最大工资是100了,更新数据后  工龄增加后工资  依然是 最大工资100,第二行;而没有超过最大工资 更新数据后  工龄增加后工资为244) job_lvl      emp_id            工龄            最大工资           工龄增加后工资 100          PSA89086M     19               100                       119225          VPA30890F      19                225                       244100          H-B39728F       20                100                       120200          L-B31947F       19                 200                       219250          F-C16315M      19                250                        269250          PTC11962M     20                 250                        270165           A-C71970F     18                165                           183225          AMD15433F     19                225                          244175          ARD36773F       17             175                         192
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

update a set 工龄增加后工资=case when jov_lvl+工龄>最大工资 then 最大工资 else jov_lvl+工龄 end

查看完整回答
反对 回复 2019-01-07
  • 1 回答
  • 0 关注
  • 460 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信