Anda dapat menyelesaikannya dengan cara yang lebih mudah:
select ts recordtime, max(to1) tempout, max(to2) tempoutstamb, max(to3) tempoutstamb2
from (
select ts, tempout to1, cast (null as numeric(10,1)) to2, cast (null as numeric(10,1)) to3
from table1
union all
select ts, null, tempout, null
from table2
union all
select ts, null, null, tempout
from table3
) tt
group by ts
order by ts;
Anda dapat menemukannya di biola https://www.db-fiddle.com/f /eJsPZijRnQFGXugLGHnn93/0
CATATAN:Saya berasumsi bahwa nilai nol yang ditampilkan sebagai '-' hanyalah pemformatan keluaran. Jika tidak demikian, keluaran dengan NULL dapat diubah menjadi '-'.
CATATAN2:Saya tidak tahu cara mengonversi ke kode Laravel/PHP, semoga Anda memiliki ide yang lebih baik.