Sql 领导职能-Oracle
我想比较一下开始日期和结束日期: 例如:Sql 领导职能-Oracle,sql,database,oracle,plsql,Sql,Database,Oracle,Plsql,我想比较一下开始日期和结束日期: 例如: 1. start_date: 2017-12-13 00:00:00 End_date: 2017-12-13 09:44:00 2. start_date: 2017-12-13 09:44:00 End_date: 2017-12-13 16:19:00 3. start_Date: 2017-12-13 16:19:00 End_date: 2017-12-18 00:00:00 我想比较开始日期行2和结束日期行1。
1. start_date: 2017-12-13 00:00:00 End_date: 2017-12-13 09:44:00
2. start_date: 2017-12-13 09:44:00 End_date: 2017-12-13 16:19:00
3. start_Date: 2017-12-13 16:19:00 End_date: 2017-12-18 00:00:00
我想比较开始日期行2和结束日期行1。如果他们不匹配,做点什么。下面的lead函数没有满足我的需求。请插话帮忙。一旦我的查询开始工作,我将把它放在一个循环中,并遍历整个表。谢谢
SELECT start_Date, end_date,
LEAD (start_Date, 1) OVER (ORDER BY start_Date) AS next_start_DAte
from my_table
where start_date >= '2017-12-01'
AND END_DATE < '2018-08-01'
AND FILE_ID IS NULL
ORDER BY UNIT_ID, START_DATE;
您可以使用“不存在”查找与下一行不完全匹配的行:
select t.*
from my_table t
where not exists (select 1
from my_table t2
where t2.start_date = t.end_date
);
这将始终返回表的最后一行,但该行满足您描述的条件。您可以使用以下查询
SELECT START_DATE ,END_DATE,
--If they dont match do something.
case when trunc(next_date) <> trunc(end_date) then 1 else 2 end dosomething
FROM (
SELECT leadtest.*, lead(start_date, 1) over (order by start_date) next_date FROM leadtest)
;
希望这有帮助 你想要什么?预期的结果确实会有所帮助。