访问“f0”字段

ve7v8dk2  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(333)

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

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

如果我将其作为一个不带“with”子句的查询运行,查询将返回一个名为“f0\u1”的列(您应该能够自己复制这个结果)。
现在,我遇到的问题是,当我试图在一个单独的select语句中访问该列时,名称“f0\u1”无法识别。()无法识别的名称:f0\u0“)

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

SELECT  f0_
FROM    calendar

当然,这个查询本身是没有意义的,因为我可以只运行第一个select语句而不使用with子句,而不需要第二个select语句。我明白了。不过,我追求的最终结果要复杂一些,上面的逻辑应该足以解释我遇到的问题。基本上,如果公共表表达式中的select语句在作为独立查询运行时返回一个名为“f0\u1”的列,那么为什么我的第二个select语句在引用公共表表达式时返回一个错误,而该表达式似乎应该返回一个名为“f0\u2”的列呢。
我假设这是一个类似于“f0”的东西,而不是一个真正的名字——它只是在没有指定名字的情况下被分配的东西,或者当你把它作为一个公共表表达式而不是一个简单的select语句来运行时,命名的工作方式可能不同。有没有一种方法可以在我的公共表表达式中为未赋值的日期数组取别名,以便在查询的第二部分中访问它?或者其他解决方案?

pgpifvop

pgpifvop1#

只需使用别名:

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

相关问题