Sql bigquery合并来自不同表的相同列

Sql bigquery合并来自不同表的相同列,sql,google-bigquery,Sql,Google Bigquery,我在BigQuery中有两个表,我想将它们的列合并在一起,并对数据进行堆栈,得到一个包含所有数据的大表。实际上,这些表包含相同的数据,但很少有列具有不同的名称,而很少有列具有相同的名称 以下是数据如何存在于这些表中的示例: 表1: Date | BU | Campaign | Impressions | Clicks 01/01/15 | XYZ | C1 | 500 | 20 表2: Date | BU | Campaign | Total

我在BigQuery中有两个表,我想将它们的列合并在一起,并对数据进行堆栈,得到一个包含所有数据的大表。实际上,这些表包含相同的数据,但很少有列具有不同的名称,而很少有列具有相同的名称

以下是数据如何存在于这些表中的示例:

表1:

Date     | BU  | Campaign | Impressions | Clicks
01/01/15 | XYZ |  C1      |    500      |   20
表2:

Date     | BU  | Campaign | Total_Impressions | Total_Clicks
01/01/16 | ABC |  C2      |    600            | 30
预期产出:

表3:

Date     | BU  | Campaign | Impressions | Clicks
01/01/15 | XYZ |  C1      |    500      |   20
01/01/16 | ABC |  C2      |    600      |   30

如何在BigQuery中执行此操作?

您正在寻找的是
联合所有人

select bu, campaign, impressions, clicks
from table1
union all
select bu, campaign, total_impressions, total_clicks
from table2;

默认情况下,BigQuery仍然使用自己的遗留SQL方言。在那里,可以用逗号合并多个表

要使其工作,每个表中的列首先需要获得相同的名称

因此,查询变成:

SELECT *
FROM 
  (select bu, campaign, impressions, clicks from table1),
  (select bu, campaign, total_impressions AS impressions, total_clicks AS clicks from table2)

当使用新的标准SQL而不是传统方言时,可以使用
union-all
语句

谢谢Gordon,因为两个表中的名称不同,即impressions和total_impressions。一个联盟都不能合并这两个。我认为马克的解决方案会奏效。@sandeep0101。什么?SQL不要求
联合
/
联合所有
的列名相同。输出列名取自第一个子查询。