Sql 访问';f0';领域

Sql 访问';f0';领域,sql,arrays,google-bigquery,alias,common-table-expression,Sql,Arrays,Google Bigquery,Alias,Common Table Expression,我在BigQuery中使用以下SQL代码创建了一个通用表表达式,其中包含一个范围内的日期列表: WITH calendar AS( SELECT * FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY)) ) 如果我将其作为一个没有'WITH'子句的查询来运行,那么查询将返回一个名为'f0_'的列(您应该能够自己复制这个结果) 现在,我遇到的问题是,当我试

我在BigQuery中使用以下SQL代码创建了一个通用表表达式,其中包含一个范围内的日期列表:

WITH    calendar AS(
        SELECT * FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY))
        )
如果我将其作为一个没有'WITH'子句的查询来运行,那么查询将返回一个名为'f0_'的列(您应该能够自己复制这个结果)

现在,我遇到的问题是,当我试图在一个单独的SELECT语句中访问该列时,名称“f0_2;”无法识别。(“无法识别的名称:f0_”)

当然,这个查询本身是没有意义的,因为我可以在不使用WITH子句的情况下运行第一个SELECT语句,而不需要第二个SELECT语句。我明白了。不过,我追求的最终结果要复杂一点,上面的逻辑应该足以解释我遇到的问题。基本上,如果公共表表达式中的SELECT语句在作为独立查询运行时返回一个名为“f0_u”的列,那么为什么我的第二个SELECT语句在引用公共表表达式时返回一个错误,而该表达式似乎应该返回一个名为“f0_u”的列呢

我假设它是类似于“f0_2;”的东西,不是一个真实的名称——它只是在没有任何指定名称的情况下被分配的东西,或者当您将其作为一个公共表表达式而不是一个简单的SELECT语句运行时,命名的工作方式可能不同。有没有一种方法可以在公共表表达式中为未列出的日期数组设置别名,以便在查询的第二部分中访问它?或者其他解决方案?

只需使用别名:

WITH calendar AS(
    SELECT * 
    FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY)) as dt
)
SELECT dt
FROM  calendar

这是我尝试的第一件事。结果我的括号放错地方了。现在工作;谢谢
WITH calendar AS(
    SELECT * 
    FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY)) as dt
)
SELECT dt
FROM  calendar