问题描述
我有几个表我无法加入它们,因为它变得非常复杂并且 bigquery 无法处理它。所以我试图联合所有表,然后分组。我在这个过程中遇到了问题。我有两个名为 t1 和 t2 的表,带有以下标题,它们没有空值:
a. b. c. d. a. b. c. e.
WITH
all_tables_unioned AS (
SELECT
*,NULL e
FROM
`t1`
UNION ALL
SELECT
*,NULL d
FROM
`t2` )
SELECT
a,b,c,MAX(d) AS d,MAX(e) AS e
FROM
all_tables_unioned
GROUP BY
a,c
不幸的是,当我运行它时,我得到一个表 a,d,e,其中 e 列全为空! 我尝试在 union all 之前对每个表运行查询,以确保它们不为空。我真的不知道我的查询有什么问题。
解决方法
union all
不使用 列 名称。只需明确列出所有列:
WITH all_tables_unioned AS (
SELECT a,b,c,d,NULL as e
FROM `t1`
UNION ALL
SELECT a,NULL as d,e
FROM `t2`
)
无论您分配什么名称,union all
都会使用位置来匹配列。