我有一个查询,它根据一些资格获取前两条记录。这很好用,但如果没有至少三个记录,它就不会找到项目。所以,我需要在下面修改我的查询,但我不太确定如何。
select t1.index
, t1.date
, t1.flag
, t2.date
, t2.flag
, t3.date
, t3.flag
from table t1
left outer join table t2
on t2.index = t1.index
left outer join table t3
on t3.index = t1.index
where t1.flag = '30'
and t1.date >= to_date('05/08/2013','MM/DD/YYYY')
and t2.date = (select max(t2a.date) from table t2a
where t2a.index = t1.index
and t2a.date < t1.date)
and t3.date = (select max(t3a.date) from table t3a
where t3a.index = t1.index
and t3a.date < t2.date)
因此,只要有至少三个具有相同索引字段的记录,它就会找到最近的记录(t1),然后找到下一个最近的记录(t2),然后是之后的记录(t3),排序为日期。
根据我复杂的链接和排序,我正在使用滞后函数并且没有得到任何可靠的东西(这个例子被简化了,因为索引在一个表中,另外一个表中的日期通过第三个表链接。)
从本质上讲,我希望 where 语句是“找到与我们已经找到的条件相匹配的最大日期,或者如果你没有找到更多的东西,那么没关系并返回你找到的内容。” 我如何编码“或者如果你没有找到更多”?