totalmente.
podrías poner una condición al final de tu consulta donde diga, where onhand>0, con eso te eliminaría todos los registros donde tengas 0 en onhand y evitarás errores en la consulta.
otra forma sería que pusieras una condición en el propio campo para que te mande un mensaje en vez de un valor cuando te salga la división entre 0.
un ejemplo sería el siguiente. estoy usando variables para que lo puedas probar inmediatamente
declare @var1 int
declare @var2 int
set @var1=6
set @var2=0
select case when @var2=0 then 0 else @var1/@var2 end
set @var2=2
select case when @var2=0 then 0 else @var1/@var2 end
en el primer caso, como la variable2 era 0, mostró cero como resultado
en el segundo caso, ubico var2 con un dato mayor a 0 y ahí ya funciona
Espero que te ayude!
Si eso es todo, no olvides dar tu feedback y otorgar puntos y si no, plantea las dudas y te apoyamos