Tengo la siguiente programación en Crystal Reports la cual necesité que traducirlo a SQL. Una solución fue como sigue a continuación (3 casos diferentes):
1.
case vIngresoDiario.IdcFormaPago
when 6 then
case when (vIngresoDiario.IdcTipoCuota <> 27 and vIngresoDiario.IdcTipoCuota <> 230) then
vIngresoDiario.MontoDetalle
else
((vIngresoDiario.MontoDetalle) / ((
round((vIngresoDiario.PrimaTotal)*100/((vIngresoDiario.PrimaPura)+(vIngresoDiario.Adicionales)+(vIngresoDiario.Impuestos))-100,0)
* 0.01) +1)) end
when 7 then
case when vIngresoDiario.IdcTipoCuota =230 then
(vIngresoDiario.MontoDetalle) / (vIngresoDiario.Interes * 0.01) +1
else
case when vIngresoDiario.TipoTransp = 5 then
(vIngresoDiario.MontoDetalle) / (vIngresoDiario.InteresPlanPago * 0.01) +1
else
((vIngresoDiario.MontoDetalle) / ((
round((vIngresoDiario.PrimaTotal)*100/((vIngresoDiario.PrimaPura)+(vIngresoDiario.Adicionales)+(vIngresoDiario.Impuestos))-100,0)
* 0.01) +1)) end end
end as 'PRIMA CONTADO'
2.
vIngresoDiario.AgenteBroker as 'AGENTE/BROKER',
case
when vIngresoDiario.Numero is not null
then convert(varchar(10),vIngresoDiario.Numero) + ' F'
else
convert(varchar(10), vIngresoDiario.NumeroRecibo) + ' R'
end as 'NRO FACTURA/RECIBO' ,
3.
case when
ABS(ROUND(vIngresoDiario.Comision/(vIngresoDiario.PrimaPura+vIngresoDiario.Adicionales-vIngresoDiario.GestionCobranzas)*100,2)-
(vIngresoDiario.Comision/(vIngresoDiario.PrimaPura+vIngresoDiario.Adicionales-vIngresoDiario.GestionCobranzas)*100)) > 0.05
then
(vIngresoDiario.Comision/(vIngresoDiario.PrimaPura+vIngresoDiario.Adicionales-vIngresoDiario.GestionCobranzas)*100)
else
ROUND(vIngresoDiario.Comision/(vIngresoDiario.PrimaPura+vIngresoDiario.Adicionales-vIngresoDiario.GestionCobranzas)*100,2)
end as 'PorcComision',