If your schema is as-posted, then no Amount exists in the Bill Item table for you to SUM. If I understand correctly, you are correct to SUM(Bill.Amount). So the correct...
Without populating tables to test your particular example-- When dealing with unexpected rows, a good clue is that p.ProductName is your only SELECT'ed column which is not also...