Заполнение нулевых значений столбца на основе столбца с равными значениями

# #google-bigquery

Вопрос:

У меня есть таблица, как показано ниже:

Идентификатор клиента Порядок Код транзакции Код транзакции
123123123 ABC-1234 нулевой нулевой
123123123 XYZ-123 нулевой нулевой
123123123 DEF-456 нулевой нулевой
123123123 HYT-111 12a8ksabbc 999123хххх11
123123123 ZZZ-999 нулевой нулевой
333333334 XYC-777 нулевой нулевой
333333334 XYZ-331 нулевой нулевой
333333334 XYZ-334 13a7kcssaf нулевой
333333334 XYZ-655 нулевой 76612ыыяс33

Я хотел бы распространить существующее значение в столбце transactionSubCode на все нулевые значения одного и того же столбца на основе столбца с одинаковым значением, которым в нашем случае является идентификатор клиента. Таким образом, в итоговой таблице будут результаты, как показано ниже:

Идентификатор клиента Порядок Код транзакции Код транзакции
123123123 ABC-1234 нулевой 999123хххх11
123123123 XYZ-123 нулевой 999123хххх11
123123123 DEF-456 нулевой 999123хххх11
123123123 HYT-111 12a8ksabbc 999123хххх11
123123123 ZZZ-999 нулевой 999123хххх11
333333334 XYC-777 нулевой 76612ыыяс33
333333334 XYZ-331 нулевой 76612ыыяс33
333333334 XYZ-334 13a7kcssaf 76612ыыяс33
333333334 XYZ-655 нулевой 76612ыыяс33

Я пробовал самостоятельно объединяться с различными подходами, но так и не смог получить желаемый результат в любом случае.

Ответ №1:

Вы можете использовать функцию окна:

 select t.* (except transactionSubCode),
       max(transactionSubCode) over (partition by customerId) as transactionSubCode
from t;
 

Комментарии:

1. Этот ответ, сэр, был очень быстрым. Спасибо!