将 CASE 语句列添加到现有 GBQ table

Add CASE statement column to existing GBQ table

假装我有一个 GBQ table:

SELECT 
'city_A' AS city,
15 AS score
UNION ALL
SELECT 
'city_A' AS city,
17 AS score
UNION ALL
SELECT 
'city_B' AS city,
8 AS score

我想添加带有 CASE 语句的新列,例如:

CASE 
    WHEN 'city_A' THEN'LA'
    WHEN 'city_B' THEN 'PH' 
    ELSE NULL END AS iso_code

如何add/generate呢?使用 INSERT 我只能插入指定所有约束的空白列,不是吗?

您需要更新。假设您的 table 已经有一个 iso_code 列,那么使用:

UPDATE yourTable
SET iso_code = CASE city WHEN 'city_a' THEN 'LA'
                         WHEN 'city_b' THEN 'PH' END
WHERE city IN ('city_a', 'city_b');

也就是说,如果 BigQuery 支持的话,您的 iso_code 列真的感觉像是生成的列。