У меня есть таблица, как показано ниже
subject_id Desc Name class BC FU PA VI
1 Fung FU 0 1 0 0
1 Para PA 0 0 1 0
1 Viru VI 0 0 0 1
1 Para PA 0 0 1 0
1 T5 Bacte BC 1 0 0 0
1 T6 Bacte BC 1 0 0 0
2 T5 Bacte BC 1 0 0 0
2 Fung FU 1 0 0 0
Что я хотел бы сделать, это создать новый столбец "BC_FU", который будет иметь 1, если у субъекта есть 1 в столбце B C и Колонна ФУ. Но его следует искать не в одной строке, а во всех записях одного и того же субъекта.
Те же логики c применимы и к столбцу BC_VI (еще один новый столбец)
Например: если вы посмотрите на subject_id = 1, мы можем видеть, что у него есть 1 в столбце B C в строках 5 и 6, тогда как у него FU = 1 в строке 1. Теперь мы знаем, что subject_id имеет оба B C и ФУ в этих записях (из базы данных)
Это то, что я пытался, но не помогает. Я пытаюсь написать в BigQuery, так что ваша помощь по исправлению или исправлению этого в BigQuery будет полезна
select *,
CASE WHEN (MAX(BC) == 1 AND MAX(FU) == 1) THEN 1
ELSE 0 END AS BC_FU,
CASE WHEN (MAX(BC) == 1 AND MAX(VI) == 1) THEN 1
ELSE 0 END AS BC_VI,
FROM TABLE T
GROUP BY SUBJECT_ID
Итак, я хотел бы создать вывод, который выглядит следующим образом
subject_id Desc Name class BC FU PA VI BC_FU BC_VI
1 Fungi FU 0 1 0 0 1 1
1 Para PA 0 0 1 0 1 1
1 Virus VI 0 0 0 1 1 1
1 Para PA 0 0 1 0 1 1
1 T5 Bacte BC 1 0 0 0 1 1
1 T6 Bacte BC 1 0 0 0 1 1
2 T5 Bacte BC 1 0 0 0 1 1
2 Virus VI 0 1 0 1 1 1