seems to be complex, but you can try this..
SELECT pv.NAME , min(ID) id, Candy , Chocolate from (
SELECT Name , Candy , Chocolate from
(SELECT
Name, [entity] , value
FROM #temp a INNER JOIN #temp2 b on a.id = b.id
) x
pivot
(
sum (value)
FOR [entity] IN (Candy , Chocolate)
) p
) as pv Left Join #temp2 a on a.name = pv.name
group by pv.NAME , Candy , Chocolate