Du kan løse det på en nemmere måde:
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;
Du kan finde den i violin https://www.db-fiddle.com/f /eJsPZijRnQFGXugLGHnn93/0
BEMÆRK:Jeg har antaget, at null-værdier vist som '-' kun er outputformatering. Hvis det ikke er tilfældet, kan output med NULL konverteres til '-'.
BEMÆRK 2:Jeg ved ikke, hvordan jeg konverterer til Laravel/PHP-kode, forhåbentlig har du en bedre idé.