Thursday, February 23, 2017

Case When Else - If Else

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',

No comments:

Post a Comment