> Is it a typo in inner query or you ARE asking for a resource from target?
Apologies all, I'm fast asleep, it should've read:
UPDATE target
SET resource = (
SELECT s.resource FROM source s
WHERE ( s.ID = ID AND s.resource IS NOT NULL )
);

