我有一些来自各种来源的历史数据,我想将它们编译成折线图。
这是我正在使用的示例 SQL 小提琴https://www.db-fiddle.com/f/oprEgt1gEz55tY5xumU6Jz/1
但是,我需要处理各种情况。在以下场景中,我总是有 3 个来源(A、B、C)。B 和 C 总是带来价值,但 A 是遇到问题的运行。
用户要求提供 1 月 1 日至 1 月 5 日的数据。
- 源 A 无法带来 1 月 3 日的数据。我的折线图应该显示 1 月 1、2、4 和 5 日的值。它跳过了 3,因为源 A 没有值。
- 由于缺少连接,来源 A 在 1 月 3 日之后没有提供任何更新。我的折线图应该显示 1 月 1 日和 2 日的值。没有 3、4 或 5,因为我们缺少来自源 A 的值。
- 源 A 在 1 月 3 日之后关闭。我的折线图应该显示从 1 月 1 日到 5 日的所有值。即使源 A 关闭,我们仍然希望查看所有值。
- 源 A 在 1 月 3 日之后作为新数据源出现。我的折线图应该显示 1 月 1 日至 5 日的所有值。
- 来源 A 只能从 1 月 3 日起提供更新(即使他们应该在 1 月 1 日起给我们提供值)。我的折线图应该只显示 1 月 3 日至 5 日的值。
我正在尝试在 MySQL 中执行此操作。我使用 GROUP BY 和 HAVING 得到了一个简单的查询,但这不足以满足上述用例。我打算用这个或使用 PARTITION BY 编写 CTE,但再次陷入无法满足所有条件的困境。