Ein skalarer Subselect (dein fetter Teil) darf genau nur 1 Feld und 1 Zeile ergeben !
Wenn der Subselect keine Daten findet, wird NULL geliefert. Sollte dein Zielfeld kein NULL erlauben, musst du den Subselect noch in ein coalesce(select ... , Defaultwert) einbauen, sonst stirbt der gesamte SQL ab dem 1. fehlerhaften Satz.

Der, auf den insert folgende, Fullselect kann durchaus beliebig viele Zeilen liefern.