У меня есть такая таблица в Bigquery
**Table WriteOps**
BatchId InstanceId Date Type WriteOpsVal
C3x73d demo1 2020-07-31 17:30:06.274 UTC Write 100
C3x73d demo2 2020-07-31 17:30:06.274 UTC Write 200
E34d38 show1 2020-07-31 17:30:06.274 UTC Write 300
QE4xe3 demo1 2020-07-30 17:30:06.274 UTC Write 300
**Table ReadOps**
BatchId InstanceId. Date Type ReadOpsVal
C3x73d demo1 2020-07-31 17:30:06.274 UTC Read 500
C3x73d demo2 2020-07-31 17:30:06.274 UTC Read 600
E34d38 show1 2020-07-31 17:30:06.274 UTC Read 600
QE4xe3 demo1 2020-07-30 17:30:06.274 UTC Read 600
C3x73d demo1 2020-07-27 17:30:06.274 UTC Read 100
C3x73d demo2 2020-07-27 17:30:06.274 UTC Read 100
C3x73d demo3 2020-07-27 17:30:06.274 UTC Read 100
C3x73d demo3 2020-07-26 17:30:06.274 UTC Read 100
Я хочу объединить все значения (WriteOpsVal, ReadOpsVal) для конкретного InstanceId на основе BatchId и Date в одной строке. Обе таблицы имеют разное количество строк.
Вот так
Table Result
BatchId. InstanceId Date WriteOpsVal ReadOpsVal
C3x73d demo1 2020-07-31 17:30:06.274 UTC 100 500
C3x73d demo3 2020-07-27 17:30:06.274 UTC 100
C3x73d demo3 2020-07-26 17:30:06.274 UTC 100
Я пробовал оператор case, например
with WriteOps as (select ...),
ReadOps as (select ....),
Unite as(select * from WriteOps UNION ALL select * from ReadOps)
select batchId,InstanceId,Date,case Type when "Write" then (select WriteOpsVal from WriteOps where batchId=Unite.batchId and InstanceId=Unite.InstanceId and Date=Unite.Date) END as WriteOpsVal, case Type when "Read" then (select ReadOpsVal from ReadOps where batchId=Unite.batchId and InstanceId=Unite.InstanceId and Date=Unite.Date) END as ReadOpsVal
, но это не дает мне предполагаемого 1 строка для 1 уникальной группы записей, и это дает мне результат для каждой таблицы одна за другой
Есть идеи, как добавить sh это? Спасибо