Oracle数据库中查询一个时间段内的记录,如果其中某一天的记录没有,则取最近一天的记录填充,这个SQL应该怎么写呢?

问题发生背景

Oracle数据库中查询一个时间段内的记录,如果其中某一天的记录没有,则取最近一天的记录填充,对于这个SQL该怎么写没有思路。

问题举例

有一个价格表,字段有价格ID,日期,价格,现在表中有一条记录('abc','2022-07-10',100),查询日期区间2022-07-10到2022-07-12的记录。

我的解答思路和尝试过的方法

暂时没有思路。

我想要达到的结果

针对举例中的数据,希望SQL能查出下面的结果:
('abc','2022-07-10',100)
('abc','2022-07-11',100)
('abc','2022-07-12',100)

希望各位可以指点迷津,十分感谢!

日期可以拉升,但是取最近的一天有歧义,比如说713,715都有数据,那么714取那天的呢,具体要看实际业务场景了
select z.time, a.code, a.time, a.num
from (SELECT TO_CHAR(TO_DATE('2022-07-10', 'yyyy-MM-dd') + ROWNUM - 1,
'yyyy-MM-dd') AS time
FROM DUAL
CONNECT BY ROWNUM <= 8) z
left join a
on a.time = z.time
order by z.time;

img

感谢@心寒丶 的提示,最后问题解决。

测试表和测试数据:

CREATE TABLE "SR_PRICE" (
  "ID_PRICE" VARCHAR2(20 BYTE) NOT NULL ,
  "DATE_PRICE" DATE ,
  "AMT_PRICE" NUMBER 
);
INSERT INTO "SR_PRICE" VALUES ('1', TO_DATE('2022-07-10 21:08:54', 'SYYYY-MM-DD HH24:MI:SS'), '100');
INSERT INTO "SR_PRICE" VALUES ('2', TO_DATE('2022-07-13 21:09:28', 'SYYYY-MM-DD HH24:MI:SS'), '80');

img

实现的SQL语句

SELECT PRI.ID_PRICE,PRI.DATE_PRICE,TEMP.DATE_TEMP,
LAST_VALUE(PRI.AMT_PRICE IGNORE NULLS) OVER(ORDER BY TEMP.DATE_TEMP ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AMT_TEMP
FROM
(SELECT TO_CHAR(TO_DATE('2022-07-10','YYYY-MM-DD')+ROWNUM-1,'YYYY-MM-DD') AS DATE_TEMP FROM DUAL CONNECT BY ROWNUM<=8)TEMP
LEFT JOIN SR_PRICE PRI ON TEMP.DATE_TEMP=TO_CHAR(PRI.DATE_PRICE,'YYYY-MM-DD') ORDER BY TEMP.DATE_TEMP;

img

其他字段要复制也是一样的写法。

我说下我的思路,做一个日期的中间表,然后中间表和价格表做左连接