【发布时间】:2022-10-05 23:23:52
【问题描述】:
假设存在一个名为:RandomPrice总结,其日期范围为2022 年 10 月 1 日星期三 00:00:00 GMT+0100至2022 年 10 月 3 日星期三 00:00:00 GMT+0100, 期间从1-3和费用如下图:
| date | period | cost |
|---|---|---|
| Wed Oct 01 2022 00:00:00 GMT+0100 (British Summer Time) | 1 | 10 |
| Wed Oct 01 2022 00:00:00 GMT+0100 (British Summer Time) | 2 | 20 |
| Wed Oct 01 2022 00:00:00 GMT+0100 (British Summer Time) | 3 | 10 |
| Wed Oct 03 2022 00:00:00 GMT+0100 (British Summer Time) | 1 | 20 |
| Wed Oct 03 2022 00:00:00 GMT+0100 (British Summer Time) | 2 | 20 |
在上表中,我们如何检查所有缺失的日期和缺失的时期?
例如,我们需要一个查询WHERE SETTLEMENT_DATE BETWEEN TIMESTAMP \'10-01-2022\' AND TIMESTAMP \'10-03-2022\',它的缺失周期范围为 1-3。
因此,预期的答案应该返回类似于以下内容的内容:
| missing_date | missing_period |
|---|---|
| Wed Oct 02 2022 00:00:00 GMT+0100 (British Summer Time) | 1 |
| Wed Oct 02 2022 00:00:00 GMT+0100 (British Summer Time) | 2 |
| Wed Oct 02 2022 00:00:00 GMT+0100 (British Summer Time) | 3 |
| Wed Oct 03 2022 00:00:00 GMT+0100 (British Summer Time) | 3 |
-
仅标记您使用的数据库。
-
一般的解决方案是拥有或生成您要检查的所有期间并将其与此表进行比较。您可以通过将句点存储在另一个表中来做到这一点,或者通过使用一些技巧通过递归或从已知的大表的 rownums 或类似的东西生成任意数量的行。