为了简化我的表,我有一个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 |
+----------+--------+----------+我希望将此数据连接到来自数据库的实时数据,该数据库也按第一个日期每月汇总(即,如果客户在1/5/20 =1/1/2020的订单)。表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发布于 2020-07-14 15:51:07
使用coalesce函数将表C与表A和表B的条目连接起来:
select
coalesce(a.customer, 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 = COALESCE(b.customer, a.customer)https://stackoverflow.com/questions/62890066
复制相似问题