Ниже представлен единственный вариант, который я могу вам предложить (BigQuery Standard SQL)
#standardSQL
SELECT problem_type, key, SUM(CAST(value AS INT64)) AS sum_value
FROM `project.dataset.table` t,
UNNEST(SPLIT(REGEXP_REPLACE(TO_JSON_STRING(t), '[{}"]', ''))) kv,
UNNEST([STRUCT(SPLIT(kv, ':')[OFFSET(0)] AS key, SPLIT(kv, ':')[OFFSET(1)] AS value)])
WHERE NOT key = 'problem_type'
GROUP BY problem_type, key
, который вы можете протестировать, поиграйте с ним выше, используя данные образца / фиктивного элемента, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 problem_type, 1 value_1, 2 value_2, 3 value_3 UNION ALL
SELECT 1, 4, 5, 6 UNION ALL
SELECT 1, 7, 8, 9 UNION ALL
SELECT 2, 14, 15, 16 UNION ALL
SELECT 2, 17, 18, 19
)
SELECT problem_type, key, SUM(CAST(value AS INT64)) AS sum_value
FROM `project.dataset.table` t,
UNNEST(SPLIT(REGEXP_REPLACE(TO_JSON_STRING(t), '[{}"]', ''))) kv,
UNNEST([STRUCT(SPLIT(kv, ':')[OFFSET(0)] AS key, SPLIT(kv, ':')[OFFSET(1)] AS value)])
WHERE NOT key = 'problem_type'
GROUP BY problem_type, key
с результатом
Row problem_type key sum_value
1 1 value_1 12
2 1 value_2 15
3 1 value_3 18
4 2 value_1 31
5 2 value_2 33
6 2 value_3 35
так, как вы можете видеть вместо того, что вы просили изначально - что-то вроде ниже
Row problem_type value_1 value_2 value_3
1 1 12 15 18
2 2 31 33 35
Но я думаю, что это разумная альтернатива, особенно если количество таких столбцов достаточно большое, чтобы тратить время и вводить все столбцы явно