SQL查询以查找元素是否附加在' X'从今天开始的几天

时间:2014-10-31 09:54:10

标签: sql oracle plsql

当我向员工附加元素VTP时,per_vtp_table的start_date和end_date会受到影响,并且会输入支付期间开始日期和结束日期。 现在我想知道VTP元素是否在今天起15天内创建。为此,我创建了一个查询: -

Select employee_no,
start_date,
end_date
from 
peR_people pp,
per_vtp_table pvt
where pvt.person_id=pp.person_id
and pvt.start_date between trunc(sysdate)and trunc(sysdate)-15

但是通过这个查询,例如存在以下数据

per_vtp_table
-------------
start_date   end_date      person_id    Element
12-Oct-2014  28-Oct-2014    1            Vtp
01-Nov-2014  15-nov-2014    1             --

per_people
----------
person_id employee_no
1          67

从今天起15天后,我必须检查是否已创建VTP元素。我在2014年10月15日与员工联系,但pvt.start_date是12-NOV-2014 这就是为什么我所做的查询没有采取它。请帮助..以便我如何能够对此要求进行完整的证明查询。

这条件是否正确?

and trunc(sysdate)-15 between pvt.start_date and pvt.end_date

此外,如果我明确通过任何日期,我需要在该日期之后提取员工的详细信息。我该怎么办呢?以下查询无效:

Select employee_no,
start_date,
end_date
from 
peR_people pp,
per_vtp_table pvt
where pvt.person_id=pp.person_id
and pvt.start_date >:p_resend_date;

per_vtp_table
-------------
start_date   end_date      person_id    Element
12-Oct-2014  28-Oct-2014    1            Vtp
01-Nov-2014  15-nov-2014    1             --

现在,如果我将重新发送日期传递为2014年10月27日,那么第一行应该会出现,因为在2014年10月27日为person_id 1附加了VTP但是它没有出现

1 个答案:

答案 0 :(得分:0)

SQL> WITH
  2  per_vtp_table AS(
  3    SELECT TO_DATE('12-Oct-2014', 'dd-mon-yyyy') start_date,
  4           TO_DATE('28-Oct-2014', 'dd-mon-yyyy') end_date,
  5           1 person_id, 'Vtp' ELEMENT FROM dual UNION ALL
  6    SELECT TO_DATE('01-Nov-2014', 'dd-mon-yyyy') start_date,
  7           TO_DATE('15-nov-2014', 'dd-mon-yyyy') end_date,
  8           1 person_id, NULL ELEMENT FROM dual),
  9  per_people AS(
 10    SELECT 1 person_id, 67 employee_no FROM dual)
 11    SELECT 'VTP was attached for person_id'
 12    || pp.person_id
 13    ||' on '
 14    || start_date msg,
 15    employee_no,
 16    start_date,
 17    end_date
 18  FROM peR_people pp,
 19    per_vtp_table pvt
 20  WHERE pvt.person_id=pp.person_id
 21  AND pvt.start_date < to_date('27-Oct-2014', 'dd-mon-yyyy')
 22  /

MSG                                                   EMPLOYEE_NO START_DAT END_DATE
-------------------------------------------- -------------------- --------- ---------
VTP was attached for person_id1 on 12-OCT-14                   67 12-OCT-14 28-OCT-14

SQL>