数据看起来像-
A_value B_value C_value Type
1 null null A
2 null null A
null 3 null B
null 4 null B
null null 5 C
null null 6 C
[当类型为'A'时,我想对'A_value'求和并存储在另一个名为'Type_value'的列中,当类型为'B'时,我想对'B_value'求和并存储在列'Type_value'中,对“ C”执行类似操作]
预期结果-
Type_value Type
3 A
7 B
11 C
如何获得此结果?
下面是BigQuery标准SQL的内容>>
#standardSQL SELECT SUM(CASE Type WHEN 'A' THEN A_value WHEN 'B' THEN B_value WHEN 'C' THEN C_value ELSE 0 END) AS Type_value, Type FROM `project.dataset.table` GROUP BY Type
如果要应用于问题中的样本数据-结果为
Row Type_value Type 1 3 A 2 7 B 3 11 C
另一个可能的选择是重复使用以下事实:您的数据具有仅在相应列中具有价值的模式。因此,如果为真,则可以使用以下版本
#standardSQL SELECT SUM(IFNULL(A_value, 0) + IFNULL(B_value, 0) + IFNULL(C_value, 0)) AS Type_value, Type FROM `project.dataset.table` GROUP BY Type
显然具有相同结果