Sql 将具有N-1个相同列和1个不同列的多行合并为一行,保留前N-1列并对最后一列求和

Sql 将具有N-1个相同列和1个不同列的多行合并为一行,保留前N-1列并对最后一列求和,sql,google-bigquery,Sql,Google Bigquery,我有一个查询,它生成一个包含26列a-Z的表。对于某些行,列a-Y是相同的,而列Z是唯一不同的。是否有一种简单而干净的方法来组合重复的行,以便列A-Y相同,列Z求和?我的解决办法是做如下事情 SELECT A, B, C,...,Y,SUM(Z) -- lots of work FROM [table produced by multiple joins] GROUP BY A, B, C,...,Y 最后一个GROUPBY子句非常长。如果在SELECT语句中添加或删除列,也很容易出错。这是我

我有一个查询,它生成一个包含26列a-Z的表。对于某些行,列a-Y是相同的,而列Z是唯一不同的。是否有一种简单而干净的方法来组合重复的行,以便列A-Y相同,列Z求和?我的解决办法是做如下事情

SELECT A, B, C,...,Y,SUM(Z)
-- lots of work
FROM [table produced by multiple joins]
GROUP BY A, B, C,...,Y

最后一个
GROUPBY
子句非常长。如果在
SELECT
语句中添加或删除列,也很容易出错。这是我想做的唯一方法吗?

下面是BigQuery标准SQL

#standardSQL
SELECT 
  ANY_VALUE((SELECT AS STRUCT t.* EXCEPT(z))).*,
  SUM(z) AS z
FROM `project.dataset.table_produced_by_multiple_joins` t
GROUP BY FORMAT('%t', (SELECT AS STRUCT t.* EXCEPT(z)))   

恭喜你拿到了10万!谢谢,@GMB:o)