|
SQL> create table test_7 (addr_from varchar2(20),addr_to varchar2(20),start_date date,no varchar2(10));
Table created
SQL> insert into test_7 values ('北京东','北京东',to_date('2006-12-01','yyyy-mm-dd'),'B01');
1 row inserted
SQL> insert into test_7 values ('北京东','北京东',to_date('2006-12-02','yyyy-mm-dd'),'B11');
1 row inserted
SQL> insert into test_7 values ('北京东','杨浦',to_date('2006-12-08','yyyy-mm-dd'),'D11');
1 row inserted
SQL> insert into test_7 values ('杨浦','杨浦',to_date('2006-12-10','yyyy-mm-dd'),'B01');
1 row inserted
SQL> insert into test_7 values ('杨浦','杨浦',to_date('2006-12-11','yyyy-mm-dd'),'B11');
1 row inserted
SQL> insert into test_7 values ('杨浦','北京东',to_date('2006-12-15','yyyy-mm-dd'),'D11');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test_7;
ADDR_FROM ADDR_TO START_DATE NO
-------------------- -------------------- ----------- ----------
北京东 北京东 2006-12-1 B01
北京东 北京东 2006-12-2 B11
北京东 杨浦 2006-12-8 D11
杨浦 杨浦 2006-12-10 B01
杨浦 杨浦 2006-12-11 B11
杨浦 北京东 2006-12-15 D11
6 rows selected
SQL> select addr_from||replace(max(sys_connect_by_path(addr_to,',')),',',' ') path from (
2
2 select addr_from,addr_from||(rn - no) as addr,addr_to,rn,no
3 from (
4 select addr_from,addr_to||' '||to_char(start_date,'yyyy-mm-dd') as addr_to,
5 row_number() over (order by 1) as rn,decode(no,'B01',1,'B11',2,'D11',3) as no
6 from test_7)
7 )
8 start with no=1
9 connect by rn-1 = prior rn
10 group by addr_from,addr;
PATH
--------------------------------------------------------------------------------
杨浦 杨浦 2006-12-10 杨浦 2006-12-11 北京东 2006-12-15
北京东 北京东 2006-12-01 北京东 2006-12-02 杨浦 2006-12-08 |
|