【发布时间】:2020-07-14 07:28:11
【问题描述】:
[简化我的表格] 我有一个 Excel 模型,它根据按月汇总的客户订单输出预测。 表A
+----------+--------+----------+
| Customer | Volume | Date |
+----------+--------+----------+
| A | 100 | 1/1/2020 |
| B | 100 | 1/1/2020 |
| C | 100 | 1/1/2020 |
| A | 100 | 2/1/2020 |
| B | 100 | 2/1/2020 |
| C | 100 | 2/1/2020 |
+----------+--------+----------+
我想将此数据加入来自数据库的实时数据,该数据库也按第一次日期每月汇总(即,如果客户在 20 年 1 月 5 日的订单 = 2020 年 1 月 1 日)。表 B:
+----------+--------+----------+
| Customer | Volume | Date |
+----------+--------+----------+
| A | 100 | 1/1/2020 |
| A | 100 | 1/1/2020 |
| A | 100 | 1/1/2020 |
| B | 100 | 2/1/2020 |
| B | 100 | 2/1/2020 |
| Z | 10 | 2/1/2020 |
+----------+--------+----------+
我还有第三张表,只有客户的第一个订单日期:表 C:
+----------+----------+--+
| Customer | Date | |
+----------+----------+--+
| A | 1/1/2020 | |
| B | 1/1/2020 | |
| C | 1/1/2020 | |
| Z | 2/1/2020 | |
+----------+----------+--+
我想比较预测 (A) 与传入的实时数据 (B) 的跟踪情况,以及添加客户的第一个订单日期 (C)。因为 (B) 是最细粒度的数据,所以我开始以此为基础。如果我对 (A) 和 (C) 进行左连接,则表 A 的某些部分会被切断(我不想要);但是我的表(C)数据正确输入。如果我对 (A) 进行完全外连接,那么我确实可以正确输入总预测,但完全外连接会弄乱表 (C)。为了增加更多的复杂性,表 B 可能有其他不属于预测的客户,所以我也需要查看这些数据。
预测数字被截断:
select
b.customer,
b.volume,
b.date,
a.volume,
c.date
from b
left join a on b.customer = a.customer
left join c on c.customer = b.customer
数据不正确:
select
b.customer,
b.volume,
b.date,
a.volume,
c.date
from b
full outer join a on b.customer = a.customer
left join c on c.customer = b.customer
【问题讨论】:
-
MySQL 没有
FULL OUTER JOIN -
“弄乱表 C”是什么意思?它到底有什么不正确的地方?
-
我会先熟悉主键的概念
-
我去掉了 MySQL 标签,因为 MySQL 不支持
FULL JOIN。请标记您真正使用的数据库。此外,您还没有显示您想要的结果,这将有助于回答问题。 -
@Bambatman 。 . .您也没有对日期做出任何解释。
标签: sql