当我向员工附加元素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但是它没有出现
答案 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>