gpt4 book ai didi

mysql - 填补 Mysql 中数据范围之间的空白

转载 作者:行者123 更新时间:2023-11-30 23:20:37 25 4
gpt4 key购买 nike

我有一个发票表,我在其中存储给定数据范围的发票(即 2012-01-01 到 2012-01-31 之间日期的发票 1)。现在有几天可能没有关联的发票,所以你会有

> ID | START_DATE | END_DATE
> ----------------------------
> 1 | 2012-01-01 | 2012-01-31
> 2 | 2012-02-05 | 2012-02-28

因此,在这种情况下,从 2 月开始的 5 天不会有与之关联的发票。这几天我想估算成本,所以我需要以某种方式“获取”这些缺失的数据范围。

我在 SO 上看到了一些类似问题的答案,但其中大部分都依赖于我无法创建的额外日历表。

是否有任何其他 SQL 解决方案,或者在我的应用程序中实际获取发票然后计算差距会更好吗?

最佳答案

如果数据集没有重叠日期,一种解决方案是使用这样的查询,提取所有缺失的范围:

select
r1.END_DATE + INTERVAL 1 DAY d1, MIN(r2.START_DATE) - INTERVAL 1 DAY d2
from
ranges r1 INNER JOIN ranges r2
ON r1.END_DATE <= r2.START_DATE
group by
r1.END_DATE
having
DATEDIFF(MIN(r2.START_DATE), r1.END_DATE) > 1

请参阅 fiddle here .

关于mysql - 填补 Mysql 中数据范围之间的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com