连接两个表与大查询连接到谷歌表



我有两个表,前3列是相同的。我需要复制表2中没有在表1中找到的所有列,并将它们粘贴到表1中的所有列之后,然后添加所有值。

表1是这样的:

Account |地理| Site | Date | Data1 | Data2
帐户1法国巴黎100 200
帐户1法国南特300 100
帐户3西班牙巴塞罗那500 300
帐户4菲律宾宿务50 100

表2是这样的:

Account | Geo | Site | Expense1 | Expense 2
帐户1法国巴黎1000 500
帐户3西班牙巴塞罗那400 600
帐户3西班牙马德里800 100
帐户4菲律宾宿务500 200

预期结果如下:

Account | Geo | Data1 | Data2 | Expense1 | Expense2
帐户1法国400 300 1000 500
帐户3西班牙500 300 1200 700
帐户4菲律宾50 100 500 200

在大查询中是可能的吗?

是的,在BigQuery或任何其他数据库中都是可能的。读一下join

查询将看起来像

select  t11.Account, t11.Geo , t11.sum_data1, t11.sum_data2, t12.sum_expense1, t12.sum_expense2
from
(   
select t1.Account, t1.Geo , sum(t1.Data1) sum_data1, sum(t1.Data2) sum_data2
from table1 t1  
group by t1.Account, t1.Geo) t11
inner join (    
select t2.Account, t2.Geo , sum(t2.Expense1) sum_expense1, sum(t2.Expense2) sum_expense2
from table2 t2  
group by t2.Account, t2.Geo) t12
on t11.Account = t12.Account 
and t11.Geo = t12.Geo

根据您的需求可以有许多不同的连接:

  1. 内的:如果您确定所有帐户地理组合都存在于两个表中。
  2. 完全外:如果两个表中都有其他表中没有的account, geo条目
  3. 左外
  4. :如果你想让table1成为驱动表,并且不想丢失任何记录,即使account + geo在table2中不存在,
  5. 右外:同上,但驾驶表为table2.

最新更新