2015-06-21 46 views
0

列表中的最新的记录,我有以下表中选择在甲骨文基于最新活动记录

enter image description here

我将向尊贵其基础上突出显示的记录喜欢的一个数据,例如:当我选择基于Foreign_key柱以及所述第二记录记录是“CONTENT =反应或PROCESS_ID = 11”然后我需要将其作为标签“PROCESS”。如果第二记录不是内容=响应而是“CONTENT =启动或PROCESS_ID = 20”(Foreign_key = 101)那么我想它贴上标签“不处理”

提示:此表中的活动是在处理日期订单(ASC)中创建的。

任何人都可以建议我SQL查询,请记住我需要执行查询CASE由于其他JOIN语句的负载。

回答

-1

Analytic functions是你的救援

这里一个完整的示例:

drop table test; 
create table test 
(id number, 
content varchar2(30), 
processdate date, 
process_id number, 
foreighn_key number); 

insert into test values(1,'New',to_date('18.06.2015 10','dd.mm.yyyy hh24'), 10,100); 
insert into test values(2,'Response',to_date('18.06.2015 11','dd.mm.yyyy hh24'), 11,100); 
insert into test values(3,'Reply',to_date('18.06.2015 12','dd.mm.yyyy hh24'), 12,100); 
insert into test values(4,'Closed',to_date('18.06.2015 13','dd.mm.yyyy hh24'), 13,100); 
insert into test values(5,'New',to_date('18.06.2015 14','dd.mm.yyyy hh24'), 10,101); 
insert into test values(6,'Initiate',to_date('18.06.2015 15','dd.mm.yyyy hh24'), 20,101); 
insert into test values(7,'Target',to_date('18.06.2015 16','dd.mm.yyyy hh24'), 21,101); 
insert into test values(8,'Closed',to_date('18.06.2015 17','dd.mm.yyyy hh24'), 13,101); 
commit; 

with trans as (
select ID, CONTENT, PROCESSDATE, PROCESS_ID, FOREIGHN_KEY, 
-- first row per FK gets rn = 1 
row_number() over (partition by FOREIGHN_KEY order by PROCESSDATE) rn, 
-- lookup the next row value of the column 
lead(CONTENT) over (partition by FOREIGHN_KEY order by PROCESSDATE) content_lead, 
lead(PROCESS_ID) over (partition by FOREIGHN_KEY order by PROCESSDATE) Process_id_lead 
from test order by processdate) 
select 
ID, CONTENT, PROCESSDATE, PROCESS_ID, FOREIGHN_KEY, 
case when content_lead = 'Response' OR Process_id_lead = 11 then 'PROCESS' 
when content_lead = 'Initiate' OR Process_id_lead = 20 then 'NOT PROCESS' end as trans_type 
from trans 
where rn = 1 

ID CONTENT      PROCESSDATE   PROCESS_ID FOREIGHN_KEY TRANS_TYPE 
---------- ------------------------------ ------------------- ---------- ------------ ----------- 
    1 New       18.06.2015 10:00:00   10   100 PROCESS  
    5 New       18.06.2015 14:00:00   10   101 NOT PROCESS