如何在 BigQuery 中对使用 WITH AS 创建的时态表进行连接?

How to do joins on temporal tables created using WITH AS in BigQuery?

我在 BigQuery 中工作,我正在使用 WITH AS 语句创建时态表,然后在它们之间进行连接,我们将它们命名为 table_1 和 table_2。这些表创建起来很复杂,我的意思是,它们需要大量的工作和代码,我需要反复使用它们,我想避免每次都做大而昂贵的子查询,例如,在它们之间做左连接.问题是当我创建 table_1 时一切正常,但是当我创建 table_2 并尝试进行左连接时,弹出警告并告诉我 table_1 不存在,所以我怎样才能做到这一点?我的代码如下:

WITH table_1 AS ( SELECT key,f2,f3 FROM xxxxxxx WHERE XXXXXXXXX)
SELECT * table_1;

WITH table_2 AS ( SELECT key,f4,f5 FROM xxxxxxx WHERE XXXXXXXXX)
SELECT * table_2;

我想在键上的 table_1 和 table_2 之间进行左连接,但我不知道该怎么做。有什么提示吗?提前致谢和问候

您可以在同一语句中使用 WITH 定义多个表达式来进行连接。

WITH table_1 AS ( SELECT key,f2,f3 FROM xxxxxxx WHERE XXXXXXXXX),
table_2 AS ( SELECT key,f4,f5 FROM xxxxxxx WHERE XXXXXXXXX)
SELECT * table_1 LEFT JOIN table_2 ON table_1.key = table_2.key;