As per my follow up comment, the error is in my thinking. When running the MERGE statement for the first time, there's no match simply because the target table contains no rows.
Egh, stupid 😅 t is empty in the beginning, so there was no match in the inner join
Hmm, I must be misunderstanding something. It seems that most (all?) RDBMS behave this way?
MERGE statement behaves incorrectly when ON clause contains TRUE or FALSE literals
Unexpected token when comparing function with value
General error when comparing VARCHAR value with CLOB value
Wrong result in ARRAY_AGG when repeating the function with different ORDER BY clauses
Wrong LocalDate value bound when in DST