"WHERE t2.stock IS NOT NULL" esa parte es necesaria porque se esta haciendo un left join con el subquery y este regresa varios valores con Nulls, ejecuta la consulta hasta esta parte:
Código SQL:
Ver originalSELECT t1.* FROM #temp AS t1
LEFT JOIN (SELECT MAX(id_stock) stock, id_producto FROM #temp GROUP BY id_producto) AS t2 ON (t1.id_producto=t2.id_producto AND t1.id_stock=t2.stock)
Y veras porque es necesario el where ;)