Table 子查询的别名

Table Aliases into Subqueries

(在此处提交以帮助可能 运行 遇到类似挑战的其他 Snowflake 用户...有兴趣查看除了已经提供的蜜蜂之外是否还有其他建议。)

为什么 table 别名不能用于子查询?

我正在使用示例 table select 查询,但是当我编写 table 别名时它不起作用。

select * from SNOWFLAKE_SAMPLE_DATA.TPCDS_SF100TCL.STORE as t
where 
t.S_REC_START_DATE = (
          select max(i.S_REC_START_DATE) from t as i
              where i.S_REC_START_DATE < '2000-01-01'
        )

我遇到 SQL 编译错误:Object 'T' does not exist

无法使用 table 别名?

(之前由 Snowflake 专业服务团队的终身成员 Mike Walton 提供)

可以,但不是那样。您应该使用 CTE,而不是:

WITH t as (
  select * from SNOWFLAKE_SAMPLE_DATA.TPCDS_SF100TCL.STORE
)
select * FROM t
where t.S_REC_START_DATE = (
         select max(S_REC_START_DATE) as S_REC_START_DATE from t
              where S_REC_START_DATE < '2000-01-01'
        )

还有其他想法and/or建议吗?