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

BigQuery:如何获取列中特定字段的值?

  •  -1
  • john  · 技术社区  · 6 年前

    我有一张有三列的桌子。我想 再加上它们。E、 我想加上2,33和111。

    Table with 3 columns

    在BigQuery中,有效/优化的方法是什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Tim Biegeleisen    6 年前

    一种方法是采用枢轴方法,如下所示:

    SELECT
        MAX(CASE WHEN Row = 2 THEN S1 END) +
        MAX(CASE WHEN Row = 3 THEN S2 END) +
        MAX(CASE WHEN Row = 1 THEN S3 END) AS the_sum
    FROM yourTable;
    

    如果你真的没有 Row

    WITH cte AS (
        SELECT *,
            ROW_NUMBER() OVER (ORDER BY S1) Row
        FROM yourTable
    )
    

    然后,使用上面我给出的第一个查询,但是 cte 作为桌子,而不是 yourTable

    下面是SQL Server中的一个演示,它至少显示了基本逻辑的工作原理:

    Demo

        2
  •  0
  •   Gordon Linoff    6 年前

    select sum(case when row = 1 then s3
                    when row = 2 then s1
                    when row = 3 then s2
               end)
    from t;
    

    我不认为你能比没有 group by