问题描述
我有一个视图,其中包含我想更改/添加的列。该列已存在,但我想添加 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
,那么您当然可以使用它。
您问题中的代码不正确,因此这也解决了语法问题。