Ich habe bei einer Division durch 0 noch nie einen SQL Fehler bekommen, weder über den Client noch beim STRSQL noch in PHP Skripts über ODBC.

Ich hatte noch ein paar mehr Probleme in meinem SQL da der die Zahlen falsch gecastet hat.

Code:
select
    asidn,
    asbz1,
    asbz2,
    coalesce(stlj, 0.00) as stlj,
    coalesce(stvj, 0.00) as stvj,
    coalesce(stvvj, 0.00) as stvvj,
    coalesce(frei, 0.00) as stfrei,
    cast(coalesce(stlj, 0) as float) / asumf2 as qmlj,
    cast(coalesce(stvj, 0) as float) / asumf2 as qmvj,
    cast(coalesce(stvvj, 0) as float) / asumf2 as qmvvj,
    cast(frei as float) / asumf2 as qmfrei,
    (
        cast(coalesce(stlj,0) as float) + cast(coalesce(stvj,0) as float) + cast(coalesce(stvvj,0) as float)
    ) / 34 as stpromon,
    (
        cast(coalesce(stlj,0) as float) + cast(coalesce(stvj,0) as float) + cast(coalesce(stvvj,0) as float)
    ) / 34 / asumf2 as qmpromon,
    case when 
        coalesce(stlj, 0) = 0 then 0 
    else 
        cast(frei as float) / (cast(stlj as float) / 10)
    end as rwlj,
    case when 
        coalesce(stlj, 0.00) = 0 then 0 
    else 
        cast(frei as float) / ((cast(coalesce(stlj, 0) as float) + cast(coalesce(stvj, 0) as float) + cast(coalesce(stvvj, 0) as float)) / ".$totmon.") 
    end as rw,
    (
        (
            cast(coalesce(stlj, 0) as float) + cast(coalesce(stvj, 0) as float) + cast(coalesce(stvvj, 0) as float)
        ) / 34
    ) * 9 - cast(frei as float) as stprod9,    
    (
        (
            (
                (
                    cast(coalesce(stlj, 0) as float) + cast(coalesce(stvj, 0) as float) + cast(coalesce(stvvj, 0) as float)
                ) / 34
            ) * 9 - cast(frei as float)
        ) / asumf2
    ) as qmprod9,    
    asabc,
    asme2
from
    stdprod.afassp
left join
    (
        select
            s3idn,
            sum(s3tlmg) as stlj
        from
            stdprod.afs3sp
        where
            substr(s3afa, 1, 1) not in ('M', 'Y', 'Z') and
            s3rgd <= '20201031'
        group by 
            s3idn
    ) ulj
        on
            ulj.s3idn = asidn
left join
    (
        select
            s3idn,
            sum(s3tlmg) as stvj
        from
            wwdta.afs3spvj
        where
            substr(s3afa, 1, 1) not in ('M', 'Y', 'Z')
        group by 
            s3idn
    ) uvj
        on
            uvj.s3idn = asidn            
left join
    (
        select
            s3idn,
            sum(s3tlmg) as stvvj
        from
            wwdta.afs3spvvj
        where
            substr(s3afa, 1, 1) not in ('M', 'Y', 'Z')
        group by 
            s3idn
    ) uvvj
        on
            uvvj.s3idn = asidn
left join
    (
        select
            abidn,
            sum(abbst) as frei
        from
            stdprod.afabsp
        where
            substr(ablag, 3, 2) < '50'
        group by 
            abidn
    ) bst
        on
            abidn = asidn
where
    substr(asidn, 11, 1) = '1' and
    substr(asidn, 13, 2) < '40' and
    (
       coalesce(stlj,0) <> 0 or
       coalesce(stvj,0) <> 0 or
       coalesce(stvvj,0) <> 0 or
       coalesce(frei,0) <> 0
    )
order by
    case when asme2 = 'st' then    
        ((coalesce(stlj,0) + coalesce(stvj,0) + coalesce(stvvj,0)) / 34) * 9 - coalesce(frei,0) 
    else
        (((coalesce(stlj,0) + coalesce(stvj,0) + coalesce(stvvj,0)) / 34) * 9 - coalesce(frei,0)) / asumf2
    end desc