员工表 t_emp工号 姓名 离职日期
001 张三 Null (空表示未离职)
002 李四 2006.11.10
003 王五 NUll
004 赵六 2006.12.20
.....加班表 t_over工号 加班日期
001 2006.11.15
002 2006.11.09 //这行保留
002 2006.11.15 //要删除这行
002 2006.11.16 //要删除这行
003 2006.11.15
004 2006.11.15
.....现想将2006.11月离职后有加班的人的加班记录删除,
能否用一句SQL完成?否则要用游标循环员工表,再单笔删除加班表的记录。多谢!
001 张三 Null (空表示未离职)
002 李四 2006.11.10
003 王五 NUll
004 赵六 2006.12.20
.....加班表 t_over工号 加班日期
001 2006.11.15
002 2006.11.09 //这行保留
002 2006.11.15 //要删除这行
002 2006.11.16 //要删除这行
003 2006.11.15
004 2006.11.15
.....现想将2006.11月离职后有加班的人的加班记录删除,
能否用一句SQL完成?否则要用游标循环员工表,再单笔删除加班表的记录。多谢!
解决方案 »
- plsql 与 sqlplus 查询结果不一致
- 哪位给一个 存储返回结果集的例子啊。。。
- java中的date类型与oracle中的date类型!!!
- 求教一条复杂的SQL
- Oracle显示游标中索引无效问题
- 急!!!ORACLE中怎样将一个表映射到内存中??在线等待
- 富有挑战的SQL,请大家来看一下绝对不后悔,同时可以挽救一个绝望中的人,谢谢了~~!
- 求教 oracle中job的问题!急
- 请问怎样把这个sqlserver的函数转换成oracle的函数?
- 急,oracle9i+win2003,进系统时因为网卡连接太慢导致oracleYTH服务启动失败
- 如何在数据库上执行存贮过程。。。?
- Oracle初始化参数设置
where 加班日期>=2006.11.01
and 工号 in(
select 工号 from t_emp where 离职日期>=2006.11.01
)--語法基本是這樣﹐日期如果不符合自己調整一下﹐快把分給我﹗
where exists
(
select 1 from t_emp t2
where t1.工号=t2.工号 and t2.离职日期>='2006.11.01' and t2.离职日期<='2006.11.30'
)
where exists (select 'a'
from t_tmp y
where y.离职日期 is not null
and x.工号 = y.工号
and x.加班日期> y.离职日期)
WHERE (工号, 加班日期) IN (SELECT 工号, 加班日期
FROM t_over a, t_emp b
WHERE a.工号 = b.工号(+) and a.离职日期 < b.加班日期)
where exists (select 'a'
from t_tmp y
where y.离职日期 is not null
and x.工号 = y.工号
and x.加班日期> y.离职日期)强.效率最高,最灵活.