字典表:
tb2(主键 varchar,维修周期 varchar)
1001 1年
1002 2年主表:
tb1(设备名称 varchar,最近维修时间 DATE,外键 varchar)说明:主表的外键,对应字典表的主键问题: 写一个查询语句,查询出 ((“最近维修时间”+ “维修周期” - 1年) < sysDate)的所有数据
tb2(主键 varchar,维修周期 varchar)
1001 1年
1002 2年主表:
tb1(设备名称 varchar,最近维修时间 DATE,外键 varchar)说明:主表的外键,对应字典表的主键问题: 写一个查询语句,查询出 ((“最近维修时间”+ “维修周期” - 1年) < sysDate)的所有数据
解决方案 »
- kernel.shmmni问题
- Oracle9i全文检索的分词问题?
- linux下删除oracle9i数据库
- ORACLE 包、函数、过程 问题
- 如何将下面二个SQL合并?
- 请问各位:win xp能否装Oracle9i企业版??去哪里可以下到Oracle9i个人版本呢?
- 一个修改表的问题,有些急,在线等回复
- 高手请教,我如何设置才能使用oracle作业在重新启动数据库后自动运行???
- 如何加入数据库的约束(一)??
- 关于plsql命令行的问题
- oracle 11g 第2版安装问题
- ORA-00604: 递归 SQL 层 1 出现错误,ORA-06553:PLS-213: standard包打不开
SELECT tb1.设备名称
FROM tb1, tb2
WHERE tb1.外键 = tb2.主键
AND add_month(tb1.最近维修时间 + tb2.维修周期, -12) < SYSDATE
where m.设备名称 = n.主键 and add_months(Add_months(m.最近维修时间 ,12 * to_number(replace(n.维修周期,'年',''))),-12) < sysdate
SELECT *
FROM tb1,tb2
WHERE tb1.外键 = tb2.主键
AND add_months(tb1.最近维修时间, to_number(substr(tb2.维修周期,1,length(tb2.维修周期) - 1)) * 12 - 12) < sysdate;
SELECT *
FROM tb1,tb2
WHERE tb1.外键 = tb2.主键
add_months(tb1.最近维修时间,to_number(translate(tb1.最近维修时间, '\'|| translate(tb1.最近维修时间, '\0123456789', '\'), '\'))* 12 - 12)< sysdate
from dual
left join tb2
on tb1.外键 = tb2.主键
where
(substr(TO_CHAR(tbl1.zdate, 'YYYY/MM/DD HH:mm:ss'),1,4)
+
replace(tb2.维修周期,'年','') - 1 )|| substr(TO_CHAR(tbl1.zdate, 'YYYY/MM/DD HH:mm:ss'),5) < sysDate
left join tb2
on tb1.外键 = tb2.主键
where
(substr(TO_CHAR(tbl1.最近维修时间, 'YYYY/MM/DD HH:mm:ss'),1,4)
+
replace(tb2.维修周期,'年','') - 1 )|| substr(TO_CHAR(tbl1.最近维修时间, 'YYYY/MM/DD HH:mm:ss'),5) < sysDate
SELECT * from tb1
left join tb2
on tb1.外键 = tb2.主键
where
(substr(TO_CHAR(tbl1.最近维修时间, 'YYYY/MM/DD HH:mm:ss'),1,4)
+
replace(tb2.维修周期,'年','') - 1 )|| substr(TO_CHAR(tbl1.最近维修时间, 'YYYY/MM/DD HH:mm:ss'),5)) < sysDate
left join tb2
on tb1.外键 = tb2.主键
where
(substr(TO_CHAR(tbl1.最近维修时间, 'YYYY/MM/DD HH:mm:ss'),1,4)
+
replace(tb2.维修周期,'年','') - 1 )|| substr(TO_CHAR(tbl1.最近维修时间, 'YYYY/MM/DD HH:mm:ss'),5) < sysDate