用任何行排序以前的数据

时间:2016-10-13 10:49:35

标签: sql oracle11g

我有相应的数据

Asset Link
100 
101 100
102 101
103 102
104 103
105 104

我的要求是,如果我将任何值传递给Asset列,它应该返回资产移动的所有先前和未来历史记录, 例如 如果将103传递到Asset列,则应通过将值与link_to列相关联来返回数据下方

101 100
102 101
103 102
104 103
105 104

请建议任何有用的解决方案

由于

1 个答案:

答案 0 :(得分:0)

第一部分是历史运动,第二部分是未来,union是合并它们:

select * from data 
  where link is not null
  connect by prior link = asset start with asset = 103
union 
select * from data 
  connect by prior asset = link start with asset = 103

测试:

create table data (asset number(4), link number(4));
insert into data values (100, null);
insert into data values (101, 100);
insert into data values (102, 101);
insert into data values (103, 102);
insert into data values (104, 103);
insert into data values (105, 104);
insert into data values (205, 214);

ASSET  LINK
----- -----
  101   100
  102   101
  103   102
  104   103
  105   104