我有两个表,前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
根据您的需求可以有许多不同的连接:
- 内的:如果您确定所有帐户地理组合都存在于两个表中。
- 完全外:如果两个表中都有其他表中没有的account, geo条目 左外
- :如果你想让table1成为驱动表,并且不想丢失任何记录,即使account + geo在table2中不存在,
- 右外:同上,但驾驶表为table2.