【发布时间】:2019-02-16 20:53:34
【问题描述】:
我试图从本质上连接两个表,找到两者之间的共同数字,找出 call_counterparty 的名称并创建一个结果表。我希望它显示 call_counterparty 的而不是正在查询的号码,在我们的例子中是(from_number)。例如,如果您打电话给我,您将是我的 in_call 交易对手,而我将是您的 out_call 交易对手。如果我给您打电话,您将是我的 out_call 交易对手,而我将是您的 in_call 交易对手。我不确定如何区分“call_counterparty”。
简而言之,被询问的人打电话或接听电话的人是谁,他们的关联姓名是什么?如果要连接的表中不存在它们的名称,则显示 null。假设我的电话号码是 2228881111...假设您甚至可以给自己打电话。
我正在使用的两个 BigQuery 数据库表是:
bigquery.call_log_table
from_number,to_number
2228881111,9997772222
2228881111,8883337777
8883337777,2228881111
2228881111,1112229999
6663332222,2228881111
2228881111,2228881111
bigquery.contact_list_table
number,name
9997772222,John
8883337777,Jill
2228881111,Me
这是我当前的代码,没有左连接或其他:
SELECT CASE WHEN call_log.from_number =
'2228881111' THEN
call_log.to_number ELSE call_log.from_number END AS
call_counterparty,
SUM(call_log.to_number = '2228881111') AS in_call,
SUM(call_log.from_number = '2228881111') AS out_call
FROM `bigquery.call_log_table` AS call_log
WHERE '2228881111' in (call_log.from_number, call_log.to_number)
GROUP BY call_counterparty
当前结果:
call_counterparty,in_call,out_call
9997772222,0,1
8883337777,1,1
1112229999,0,1
6663332222,1,0
2228881111,1,1
我想要的结果:
call_counterparty,counterparty_name,in_call,out_call
9997772222,John,0,1
8883337777,Jill,1,1
1112229999,<null>,0,1
6663332222,<null>1,0
2228881111,Me,1,1
我尝试了各种方法,花了几个小时,用谷歌搜索了很多,但我根本无法弄清楚。任何帮助将不胜感激!
【问题讨论】:
标签: google-bigquery