如何在Oracle SQL Select脚本中实现递归



我正试图通过查询另一个构造不好的表来在Oracle SQL中创建一个表。例如,我在原始表格中有以下数据:

Deal No.        Start Date      End Date     Value
1256            20.01.22        25.01.22     10,000 
1489            23.01.22        27.01.22      5,000

我需要使用select语句创建一个表,其中包含每笔交易每天的值,这样结果看起来像这样:

Deal No.      Date         Value
1256          20.01.22     10,000
1256          21.01.22     10,000
1256          22.01.22     10,000
1256          23.01.22     10,000
1489          23.01.22      5,000
1489          24.01.22      5,000
1489          25.01.22      5,000
1489          26.01.22      5,000
1489          27.01.22      5,000

现在,为最终用户查询该表要容易得多。

非常感谢任何协助。

问候

Herbz

尝试

WITH t_dates_between(id, startdate, enddate, value) AS (
SELECT id, startdate, enddate, value 
FROM t_dates
UNION ALL
SELECT id, startdate+1, enddate, value 
FROM t_dates_between
WHERE startdate < enddate
)
SELECT id, startdate, value 
FROM t_dates_between
ORDER BY id, startdate;

注意:您的fiddle中缺少值列。

最新更新