加入创建重复行

Posted

技术标签:

【中文标题】加入创建重复行【英文标题】:Join creates duplicate rows 【发布时间】:2020-09-07 21:40:46 【问题描述】:

我正在尝试加入 BigQuery 中的 3 个表,这些表包含具有相同标识符 (SKU) 并关注订单日期的产品的销售额。

我的目标是在一张表中包含订单日期、销售表 1、销售表 2、销售表 3 和产品标识符 (SKU)。为此,我一直在尝试下一个查询:

SELECT
  Order_Date, Sales1, Sales2, Sales3, SKU
FROM
  Table 1
LEFT JOIN
  Table 2 ON Order_Date_Table1 = Order_Date_Table2 AND SKU_Table1 = SKU_Table2
LEFT JOIN
  Table 3 ON Order_Date_Table1 = Order_Date_Table3 AND SKU_Table1 = SKU_Table3

但是,当其中 2 个表包含同一 SKU 和同一天的销售额时,我会得到重复的行。所有其他联接类型都会发生类似的情况。

我怎样才能避免这种情况?

【问题讨论】:

【参考方案1】:

在我看来,聚合可以解决您的问题:

SELECT Order_Date, SKU, SUM(Sales1), SUM(Sales2), SUM(Sales3)
...
GROUP BY Order_Date, SKU

【讨论】:

您好 Holger,非常感谢您的回答。不幸的是,聚合并不能解决问题,因为它只是将“重复的行”相加。我的目标是在一个表中包含三列,每列包含当天不同来源的销售额和 SKU,但是只有在表中有特定日期和 SKU 的销售额时,数据才会相加。然后是重复发生的时候。如果某一天或 SKU 没有其他表的值,则它“消失”。希望能表达清楚...

以上是关于加入创建重复行的主要内容,如果未能解决你的问题,请参考以下文章

左外侧加入无重复行

加入具有重复行数据的表时如何获得正确的 SUM()?

如何加入目录内的所有txt文件? (尊重所有行都在另一行之下)[重复]

连接表时H2数据库重复行

SQL JOIN 重复行

创建两行之和的新列,但每两行重复一次[重复]