Вы выбираете значения в переменные. Переменная может содержать только одно значение за раз, поэтому, когда вы запускаете оператор SELECT, он может выбрать одно, или два, или 100 значений из таблицы, но только последнее сохранится в переменной после завершения оператора. Вместо этого комбинируйте выбранные и вставленные операторы, как показано ниже:
insert into @temptable(Code,ID)
SELECT (COALESCE(@stDeptCode + ',', '') + CAST(PPL.DeptCode AS VARCHAR(5))), peopleID
FROM dbo.PPL
WHERE @PeopleID = peopleID