Your joins are incorrect. When I update your query the table Factor or table EstimatorDesign has no matching joins to have a good result.
Based on your query this is what you ask
select
case when charindex('new',lower(F.FactorName))>0 then 'N'
else
case when charindex('modif',lower(F.FactorName))>0 then 'M'
else 'O'
end as 'NM',
F.FactorName as 'FactorName',
I.FactorVal as 'FactorVal',
p.DocID as 'docID'
into #tempTable
from pdInventory as I
JOIN Factor as F on f.?? = ??
JOIN Projects as P on P.PrjActualID = I.PrjActualID
JOIN EstimatorDesign as E on f.modelID = e.ModelID
where f.Factorname not in (select FactorName from EstDefaultFactors)
and E.ModelType = 'H'
and p.DocID in ('201')
don't for get to end with DROP TABLE #tempTable when you do not need the #temptable anymore.