我正试图通过查询另一个构造不好的表来在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中缺少值列。