totalmente.
poderias adicionar uma condição no final da sua consulta que diga, where onhand>0, com isso você eliminará todos os registros onde tiver 0 em onhand e evitará erros na consulta.
outra forma seria adicionar uma condição no próprio campo para que ele envie uma mensagem em vez de um valor quando a divisão por 0 ocorrer.
um exemplo seria o seguinte. estou usando variáveis para que você possa testar imediatamente
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
no primeiro caso, como a variável2 era 0, mostrou zero como resultado
no segundo caso, coloquei var2 com um dado maior que 0 e aí já funciona
Espero que isso ajude!
Se for tudo, não se esqueça de dar seu feedback e atribuir pontos e, se não for, coloque suas dúvidas e nós te ajudaremos