代码之家  ›  专栏  ›  技术社区  ›  villasv

BigQuery与SELECT*FROM(值…)的等价物是什么作为t

  •  0
  • villasv  · 技术社区  · 3 年前

    我正在尝试使用以下PosgreSQL语法设置带有常量表的CTE:

    WITH rates AS (
      SELECT * FROM (
        VALUES
          (2017, 2018, 0.1),
          (2016, 2017, 0.1),
          (2015, 2016, 0.2),
          (2014, 2015, 0.3)
      ) AS t(init, end, rate)
    )
    SELECT * FROM my_bq_table as my
      JOIN rates as r ON my.year = r.init;
    

    但我越来越 Syntax error: Expected keyword JOIN but got "," 因为BigQuery显然无法识别语法 VALUES [(tuple)] 作为一个 from-clause 跟PostgreSQL一模一样。

    实现类似CTE的最简单方法是什么?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Mikhail Berlyant    3 年前

    考虑下面的方法

    WITH rates AS (
      SELECT * FROM UNNEST([
          STRUCT<init INT64, `end` INT64, rate FLOAT64>
          (2017, 2018, 0.1),
          (2016, 2017, 0.1),
          (2015, 2016, 0.2),
          (2014, 2015, 0.3)
      ])
    )
    SELECT * FROM rates     
    

    有输出

    enter image description here