我有一个由日期列组成的表
我还需要选择此列我需要选择不存在于数据库中的上一个日期(如果存在)或当前数据
我尝试了以下查询
select hst1.QUERYID,hst1.starttime,
ZEROIFNULL(hst2.starttime) as delta
from dbqlogtbl_dba_hst hst1
left outer join dbqlogtbl_dba_hst hst2 on
hst1.QUERYID = hst2.QUERYID;
我在获取结果时遇到错误
我有一个由日期列组成的表
我还需要选择此列我需要选择不存在于数据库中的上一个日期(如果存在)或当前数据
我尝试了以下查询
select hst1.QUERYID,hst1.starttime,
ZEROIFNULL(hst2.starttime) as delta
from dbqlogtbl_dba_hst hst1
left outer join dbqlogtbl_dba_hst hst2 on
hst1.QUERYID = hst2.QUERYID;
我在获取结果时遇到错误
你似乎只是想要lag():
select hst1.QUERYID, hst1.starttime,
lag(hst1.starttime) over (order by hst1.starttime)
from dbqlogtbl_dba_hst hst1 left join
dbqlogtbl_dba_hst hst2
on hst1.QUERYID = hst2.QUERYID ;
我猜你真的想要这个queryid,所以你需要partition by:
lag(hst1.starttime) over (partition by hst1.QUERYID order by hst1.starttime)