我有这样一个字段 要求,
在职员工工资大于2000的按两千计算,工资小于600的按照600计算。
如果是退休人员,工资在500一下的按照500块。高限不变。
下面是显示数据:
人员类别 工资
在职 1120
退休 800
退休 400
退休 380
在职 5120
在职 3920
退休 800
退休 400
退休 380 我要的结果如下:
人员类别 工资
在职 1120
退休 800
退休 400
退休 380
在职 2000
在职 2000
退休 800
退休 500
退休 500
在职员工工资大于2000的按两千计算,工资小于600的按照600计算。
如果是退休人员,工资在500一下的按照500块。高限不变。
下面是显示数据:
人员类别 工资
在职 1120
退休 800
退休 400
退休 380
在职 5120
在职 3920
退休 800
退休 400
退休 380 我要的结果如下:
人员类别 工资
在职 1120
退休 800
退休 400
退休 380
在职 2000
在职 2000
退休 800
退休 500
退休 500
解决方案 »
- 求助:oracle中group by分组语句解惑!谢谢
- 求一ORACLE SQL语句
- 跪求一个查询
- 谁用过ORACLE 中的PROC*C/C++预编译器,进来一下。。。。
- 如何在 SQLPLUS 中 查看 系统的SGA 中各个缓存分配的大小?
- ORACLE10G-SQLPLUS创建表问题
- 9i中存储过程正常编译通过,为什么会有这样的错误?ORA-06512: 在"SYS.PTBL", line 9
- 求救急!请教 表象是ORA-12154的奇怪问题
- 知道数据库中有一个表名,怎样才能知道这个表位于哪个用户?哪个表空间中?
- 怎样在sql*plus中读入一个图片文件,再将其读出至另一个文件中呢?急!!!100分,不够再加!!!
- 求救:如何将foxpro 数据导入到ORACLE数据库中? 急
- foxpro 倒出的dbf文件,如何倒入到oracle中
人员类别,
decode(人员类别,'退休',
decode(sign(工资-500),-1,500,工资),'在职',
decode(sign(工资-600), -1, 600,
deocde(sign(2000-工资),-1,2000,工资)),
null) 工资
from
工资表
select t.人员类别, (case
when t.人员类别 = '退休' and .... then
.....
when t.item_id = '在职' and .... then
....
else
....
end ) AS 工资
from tab t
case比较麻烦,万一人员类别变化还要更新视图,很麻烦。
procedure就是不知道如何写!!
case when a.工资<b.工资下限 then b.工资下限
when a.工资>b.工资上限 then b.工资上限
else a.工资
FROM 工资 a inner join 类型上下限 b
on a.人员类别=b.人员类别