【发布时间】:2016-10-06 16:09:55
【问题描述】:
我想加入两个表“Table1”和“Table2”。对于 Table1 中的每个 Id,我必须获取 StartTime 和 StopTime 并参考其 DateTime 在表 1 的 StartTime 和 StopTime 之间的 Table2,然后从表 2 中检索相应的 Point 1 和 Point 2。我尝试加入这两个表和在 on 子句中,我检查了 Table1.StartTime >= Table2.DateTime 和 Table1.StopTime = in on 子句。只是想知道是否有任何补充。任何帮助将不胜感激。
表1:
Id StartTime StopTime
1 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC
表2:
Id DateTime Point1 Point2
1 2016-10-05 12:44:21 UTC 52.9 53.2
2 2016-10-05 12:44:24 UTC 33.1 90.1
3 2016-10-05 12:50:47 UTC 52.3 90.8
4 2016-10-05 12:53:23 UTC 52.3 -111.11
结果表:
Id StartTime StopTime Point1 Point2
1 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 52.9 53.2
2 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 33.1 90.1
3 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 52.3 90.8
4 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 52.3 -111.11
【问题讨论】:
-
Bigquery 对 where 条件有同样的限制吗?如果没有,您可以将其编写为 Cross Join + where 条件(可能会影响性能)
-
BigQuery 旧版 SQL 存在限制。如果您使用标准 SQL,则在连接条件中还有更多有效的选项。
标签: sql google-bigquery