向 Athena 视图中的列添加条件 (SQL Presto)

问题描述

我有一个视图,其中包含我想更改/添加的列。该列已存在,但我想添加 CASE WHEN 条件。

所以我已经做了类似的事情:

CREATE VIEW testing_view AS
SELECT code,tag
FROM database.testtable;

我想做类似的事情:

ALTER(?) VIEW testing_view AS
SELECT code,tag
CASE WHEN "code" = "restricted" OR "code" = "rest" OR "code" = "rstd" 
THEN 'restricted' END "tag"

目标是使用这些条件更新标签列。

我想改变视图,但如果我必须在这种情况下创建一个新视图,我也可以这样做,但我遇到了问题。它没有添加到现有列,而是创建了一个名为 tag 的新(第二个)列,其中仅包含“受限”字样。鉴于代码,我明白为什么,但我不知道如何获得我想要的东西。

编辑:我已经有了这个表的条件的情况,因此尝试放入两个最终会出现错误

多次指定列名“标签

所以我的代码更像是:

CREATE VIEW testing_view AS
SELECT code,tag
CASE WHEN "code" = "example" AND "code" = '' THEN 'example' END "tag"
FROM database.testtable;

解决方法

我想你想要:

CREATE OR REPLACE VIEW testing_view AS
    SELECT code,(CASE WHEN code IN ('restricted','rest','rstd')
                 THEN 'restricted' ELSE tag
            END) as tag
    FROM database.testtable;

如果您的 Presto 版本支持 ALTER VIEW,那么您当然可以使用它。

您问题中的代码不正确,因此这也解决了语法问题。