Oracle 谓语前推导致的错误

create table tab_zy_test1
(
id1 number,
date1 date,
date2 varchar2(100)
);

insert into tab_zy_test1 values (1, date '2018-01-01', '20180131');
insert into tab_zy_test1 values (2, date '2018-01-01', '20180228');
insert into tab_zy_test1
values
(2, date '2018-01-01', '2018/02/28 14:33:33');
insert into tab_zy_test1
values
(3, date '2018-02-01', '20180228 14:33:33');
commit;
insert into tab_zy_test1
values
(3, date '2018-02-01', ' ');
commit;

select *
from tab_zy_test1;


with tab_a as
(select t.id1,
t.date1,
t.date2,
row_number() over(partition by t.id1, t.date1 order by t.date2 desc) rw
from tab_zy_test1 t),
tab_b as
(select a.id1, a.date1, a.date2, a.rw from tab_a a where a.rw = 1),
tab_c as
(select b.id1, b.date1, to_date(substr(b.date2, 1, 8), 'yyyy-mm-dd') date2
from tab_b b)
--select * from tab_c
,
tab_d as
(select c.date1 - c.date2 from tab_c c --where c.date1 - c.date2 < 0
)
select * from tab_d;

猜你喜欢

转载自www.cnblogs.com/MoreDrinkHotWater/p/9857902.html