create table TEST
(
dt DATE not null,
event NUMBER(2) not null,
y NUMBER(2)
)
建表后,自己随便整点数据
select *
from test
where dt - 2 in (select DT from Test where event > 0)
or dt - 1 in (select DT from Test where event > 0)
or dt in (select DT from Test where event > 0)
or dt + 1 in (select DT from Test where event > 0)
or dt + 2 in (select DT from Test where event > 0)
更新y值:
update test set y=1
where dt - 2 in (select DT from Test where event > 0)
or dt - 1 in (select DT from Test where event > 0)
or dt in (select DT from Test where event > 0)
or dt + 1 in (select DT from Test where event > 0)
or dt + 2 in (select DT from Test where event > 0)
数据量大的话,效率比较低,最好拆成5个update:
update test set y=1 where dt - 2 in (select DT from Test where event > 0)
update test set y=1 where dt -1 in (select DT from Test where event > 0)
update test set y=1 where dt in (select DT from Test where event > 0)
update test set y=1 where dt +1 in (select DT from Test where event > 0)
update test set y=1 where dt +2 in (select DT from Test where event > 0)