SQL Server可用的DATETIME区间计数查询在Redshift建视图时报语法错误
Redshift 兼容视图修改方案
核心语法差异说明
SQL Server 与 Redshift 的语法差异是报错的核心原因,主要不兼容点如下:
- Redshift 不支持
SELECT ... INTO语法创建表或视图,创建视图需使用标准的CREATE VIEW 视图名 AS语法 - SQL Server 用方括号
[]包裹含空格、特殊字符的标识符,Redshift 需使用双引号""包裹这类标识符 - SQL Server 中的
dbo.是默认 schema 引用,Redshift 中默认 schema 为public,可根据实际场景替换
修改后的视图创建代码
CREATE VIEW "32813DA" AS SELECT t1.*, (SELECT COUNT(*) FROM "Leads - leads" t2 WHERE t2.Receive_Time BETWEEN t1."Plan Air" AND t1."Plan End") AS Leads FROM "Leads - extended spot summary fla32813" t1;
补充说明
- 若需要创建物理存储表而非视图,将第一行替换为
CREATE TABLE "32813DA" AS即可 - 若表存放在非默认 schema 下,需要在表名前补充 schema 名,例如
public."Leads - leads" - 双引号包裹的标识符大小写需要和实际建表时的大小写完全一致,否则会触发标识符不存在的报错
- 执行前请确认
Receive_Time、Plan Air、Plan End三个字段均为 TIMESTAMP/DATE 类型,避免区间比较时出现类型不匹配问题
内容的提问来源于stack exchange,提问作者Henno Gous
相关产品推荐
相关产品推荐

