如何查询 table 并按条件汇总某些列,而不是其他列?

How to query table and sum up certain columns by criteria, but not others?

从 table 开始,假设:

A B C
1 1 99
2 2 88
3 3 77

我正在尝试编写一个查询,该查询会导致 table 在 C 列中具有不同的值,基于以下条件:当 A 具有值 2 时,C 的值应该是现有值 + 来自 C 的值,其中 A 是 1。结果如下:

A B C
1 1 99
2 2 187
3 3 77

不确定分组在这里是否有意义,特别是因为可能有多个相似的标准。我能想到的关闭查询是

SELECT A, B, C+(SELECT C FROM table1 WHERE A=1 LIMIT 1) FROM table1 WHERE A=2;

但这无效 SQL,因为不能像这样使用子查询。欢迎任何建议,即使它们涉及以某种方式改变原始 table.

的结构

考虑以下方法(在 BigQuery 中测试)

select a, b, c + 
  case a 
    when 2 then sum(if(a = 1, c, 0)) over()
    else 0
  end c
from your_table      

如果应用于您问题中的示例数据 - 输出为

SELECT
    A,
    B,
    CASE
        WHEN A=2 THEN C + (SELECT C FROM table WHERE A = 1)
        ELSE C
    END AS C
FROM
    table;