select * from jobs
Update Employee Set job_lvl=job_lvl+(Datepart(yyyy,Getdate())-Datepart(yyyy,hire_date))
Update Employee Set job_lvl=(Select Max_lvl From Jobs Where Jobs.job_id=Employee.job_id) Where Employee.job_lvl>(Select Max_lvl From Jobs Where Jobs.job_id=Employee.job_id)
(15 行受影响)
消息 220,级别 16,状态 2,第 2 行
发生数据类型 tinyint 的算术溢出错误,值 = 266。
语句已终止。
(0 行受影响)
小弟才出学SQL ,在这个问题上纠结了好几天, 有哪位大哥看到请帮我解决下· ,如果有更好的实现问题标题的,也在楼下给我顶起哈·在线等, 如果还有不清晰的地方 加我Q 196536910
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。
说明你超出这个范围了
其实你这里要做的就是给Employee表增加job_lvl 而已,算工资根据是另外的事.
update Employee
set job_lvl=case when (year(getdate())-year(hire_date))>(Select Max_lvl From Jobs Where Jobs.job_id=Employee.job_id) then (Select Max_lvl From Jobs Where Jobs.job_id=Employee.job_id) else year(getdate())-year(hire_date) end
回头看你的设计,应该不用操作你这步的,在计算工资的时候直接根据计算式就可以得到job_lvl了。不用专门用个字段记录。