我有几个数据源,我希望对它们应用相同的分析,并最终加载到一个更大的表数据库(uniformtable)中。不同的源文件包含不同的列,有时源文件涉及我需要加入的crosswalk文件。我希望有一个查询,将所有源的数据转换为uniformtable格式,基于每个源的唯一键。大致是这样的:
case when source.sourceid = 1 then
create uniformtable as
select column1a as uniforma, column1b as uniformb, sourceid from source
else
when source.sourceid = 2 then
create uniformtable as
select column2a as uniforma, column2b as uniformb, sourceid from source
end;我曾尝试使用if-then和case-when来完成此操作,但得到的语法错误指向查询的最开始位置。Redshift允许你使用if逻辑来进行这种控制吗?
发布于 2017-06-05 05:21:43
不,此逻辑是不允许的。
CASE语句仅在SELECT语句中有效。
您需要在Amazon Redshift外部执行此逻辑,然后只发送最终的SQL来创建表。
https://stackoverflow.com/questions/44358643
复制相似问题