当前位置: 代码迷 >> Oracle管理 >> sql依照要求修改雇员的福利comm列
  详细解决方案

sql依照要求修改雇员的福利comm列

热度:244   发布时间:2016-04-24 04:11:08.0
sql按照要求修改雇员的福利comm列
如果薪水小于1000元,福利为100元;
如果薪水大于等于1000元,小于2000元,为80元;
如果薪水大于等于2000元,小于6000元,福利为50元;
怎么写怎么错好纠结;
只能查询一次恩
求代码坐等大神恩
------解决思路----------------------
引用:
如果薪水小于1000元,福利为100元;
如果薪水大于等于1000元,小于2000元,为80元;
如果薪水大于等于2000元,小于6000元,福利为50元;
怎么写怎么错好纠结;
只能查询一次恩
求代码坐等大神恩

用case when 直接更新就好
update emp set comm=(case 
when sal<1000 then 100 
when sal>=1000 and sal<2000 then 80
when sal>=2000 and sal<6000 then 50
end)
where ……

------解决思路----------------------
以后问问题,最好把表定义以及 初始化数据列出来。 然后描述自己需要的结果


create table emp(
id number,
name varchar2(20),
sal number,
fun number
)

update emp t set t.fun=(case when sal<1000 then 100 when sal<2000 and sal>=1000 then 80
when sal>=2000 and sal<6000 then 50 end
)

------解决思路----------------------
update语句中用case语句效率比较高,楼主向这位多学习才对!
------解决思路----------------------
update emp set comm=(case 
when sal<1000 then 100 
when sal>=1000 and sal<2000 then 80
when sal>=2000 and sal<6000 then 50
end)
where 条件表达式;
使用case when 比较简洁。