1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| create table ada_test_1
(
invoice_id number,
company number
);
create table ada_test_2
(
key_ref varchar2(255),
line_no number,
step_no number,
current_step_no number,
app_date date,
approval_status varchar2(1)
);
Insert into ADA_TEST_1 (INVOICE_ID,COMPANY) values (202660,622);
Insert into ADA_TEST_1 (INVOICE_ID,COMPANY) values (202661,622);
Insert into ADA_TEST_1 (INVOICE_ID,COMPANY) values (202797,622);
Insert into ADA_TEST_1 (INVOICE_ID,COMPANY) values (202798,622);
Insert into ADA_TEST_1 (INVOICE_ID,COMPANY) values (202799,622);
REM INSERTING into ADA_TEST_2
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202660^',1,10,10,to_date('26/09/2011 10:15:48','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202661^',1,10,10,to_date('26/09/2011 10:15:55','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202797^',1,30,30,to_date('26/09/2011 10:15:57','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202798^',1,30,10,to_date('26/09/2011 10:15:59','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202798^',2,10,10,to_date('26/09/2011 10:16:00','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202798^',3,20,10,to_date('26/09/2011 10:16:02','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202799^',1,30,20,to_date('26/09/2011 10:16:03','DD/MM/YYYY hh24:mi:ss'),null);
Insert into ADA_TEST_2 (KEY_REF,LINE_NO,STEP_NO,CURRENT_STEP_NO,APP_DATE,APPROVAL_STATUS) values ('COMPANY=622^INVOICE_ID=202799^',2,20,20,to_date('26/09/2011 10:16:06','DD/MM/YYYY hh24:mi:ss'),null);
commit;
SELECT *
FROM
(
SELECT
a.invoice_id,
b.line_no,
b.key_ref,
b.step_no,
b.app_date,
b.current_step_no,
b.approval_status,
max(b.step_no) over (partition BY a.invoice_id) AS max_step_no
FROM
ada_test_1 a, ada_test_2 b
WHERE
'COMPANY='|| a.company ||'^INVOICE_ID='|| a.invoice_id ||'^' =b.key_ref AND
b.approval_status IS NULL
ORDER BY
a.invoice_id
)
WHERE step_no = max_step_no;
INVOICE_ID LINE_NO KEY_REF STEP_NO APP_DATE CURRENT_STEP_NO A MAX_STEP_NO
---------- ---------- -------------------------------------------------- ---------- -------- --------------- - -----------
202660 1 COMPANY=622^INVOICE_ID=202660^ 10 26/09/11 10 10
202661 1 COMPANY=622^INVOICE_ID=202661^ 10 26/09/11 10 10
202797 1 COMPANY=622^INVOICE_ID=202797^ 30 26/09/11 30 30
202798 1 COMPANY=622^INVOICE_ID=202798^ 30 26/09/11 10 30
202799 1 COMPANY=622^INVOICE_ID=202799^ 30 26/09/11 20 30 |