Для этого набора данных простая агрегация будет делать то, что вы хотите:
select min(a) a, min(b) b, id
from mytable
group by id
Это использует тот факт, что агрегатные функции игнорируют null
значения; мы могли бы получить тот же результат с max()
, что и с min()
.