GBQ SQL:如果在表中找不到记录,则返回空格

GBQ SQL:如果在表中找不到记录,则返回空格,sql,google-bigquery,Sql,Google Bigquery,我有一个问题如下。如果在表中找不到键,我希望SQL返回空格 从表A中选择*,其中输入1、2、3、4 Output: 1 x y 2 a b '' '' '' 4 ds c 假设表A有3列,表中没有键3记录,而不是空字符串,则应使用空值以确保类型安全。 NULL表示与空字符串或零(仍然是特定类型的值)相比,不存在任何值。 如果您想使用空字符串,您必须在运行时将密钥转换为字符串-这不是很方便 获得结果的诀窍是创建一个包含所有键的理想键表——我在这里使用generate

我有一个问题如下。如果在表中找不到键,我希望SQL返回空格

从表A中选择*,其中输入1、2、3、4

Output:
1   x   y

2   a   b

'' ''  ''

4   ds  c

假设表A有3列,表中没有键3记录,而不是空字符串,则应使用空值以确保类型安全。 NULL表示与空字符串或零(仍然是特定类型的值)相比,不存在任何值。 如果您想使用空字符串,您必须在运行时将密钥转换为字符串-这不是很方便

获得结果的诀窍是创建一个包含所有键的理想键表——我在这里使用generate_数组,从1到maxkey。然后左键将您的桌子连接到它,瞧:

WITH test AS (SELECT * FROM UNNEST([
  STRUCT(1 AS key, 'x' AS col1, 'y' AS col2), 
  STRUCT(2 AS key, 'a' AS col1, 'b' AS col2), 
  STRUCT(4 AS key, 'x' AS col1, 'y' AS col2)
  ])
  )

SELECT 
 test.*
FROM UNNEST(GENERATE_ARRAY(1, (SELECT MAX(key) FROM test))) AS key
LEFT JOIN test USING(key)
给你


如果您想要所有的钥匙,只需从…中选择*即可。

非常感谢Martin。成功了。但关键值不符合顺序。我使用不同的方法来生成这些密钥。谢谢你的帮助!!