SELECT z.prestamo_id, 
						max(CASE WHEN estado_cuota IN ('PAID') THEN numero_cuota ELSE NULL END ) ult_nro_cuotas_pagadas,
						max(CASE WHEN estado_cuota IN ('PAID') THEN Fecha_Pago ELSE NULL END ) ult_fecha_pago_limite,
						max(case when numero_cuota in (1) then Fecha_Pago else NULL end) fecha_1er_pago_limite,
						max(case when numero_cuota in (2) then Fecha_Pago else NULL end) fecha_2do_pago_limite,
						max(case when numero_cuota in (3) then Fecha_Pago else NULL end) fecha_3er_pago_limite,
						max(case when numero_cuota in (4) then Fecha_Pago else NULL end) fecha_4to_pago_limite,
						max(case when numero_cuota in (5) then Fecha_Pago else NULL end) fecha_5to_pago_limite,
						max(case when numero_cuota in (6) then Fecha_Pago else NULL end) fecha_6to_pago_limite,
						max(CASE WHEN estado_cuota IN ('PAID') THEN Fecha_Efectiva_Pago ELSE NULL END) ult_fecha_pago_efectivo,
						sum(coalesce(monto_recaudado_from_income, 0)) monto_recaudado_from_income,
						sum(CASE WHEN estado_cuota IN ('PAID') THEN coalesce(monto_recaudado_from_income, 0) ELSE 0 END) monto_recaudado_from_income_pagado,
						sum(CASE WHEN estado_cuota IN ('PENDING') THEN coalesce(monto_recaudado_from_income, 0) ELSE 0 END) monto_recaudado_from_income_pendiente,
						CASE WHEN sum(CASE WHEN estado_cuota IN (&#039;PENDING&#039;) THEN coalesce(monto_recaudado_from_income, 0) ELSE 0 END) <= 0 THEN 1 ELSE 0 END flg_validacion_pendiente_sin_reacudo,
						sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;) THEN monto_cuota ELSE 0 END) monto_cuotas_pagado,
						sum(CASE WHEN estado_cuota IN (&#039;PENDING&#039;) THEN monto_cuota ELSE 0 END) monto_cuota_pendiente,
						sum(monto_recaudado_from_income)*100.0 / sum(monto_cuota)  porc_pago_pos,
					    CASE WHEN sum(CASE WHEN estado_cuota IN (&#039;PENDING&#039;)  THEN coalesce(monto_cuota,0) ELSE 0 END) = 0 THEN NULL 
						            ELSE sum(CASE WHEN estado_cuota IN (&#039;PENDING&#039;)  THEN coalesce(monto_recaudado_from_income,0) ELSE 0 END )*100.0 / sum(CASE WHEN estado_cuota IN (&#039;PENDING&#039;) THEN  coalesce(monto_cuota,0) ELSE 0 END)  end porc_pago_pos_pendiente,
					
					case WHEN sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;)  THEN coalesce(monto_cuota,0) ELSE 0 END) = 0 THEN NULL 
					          ELSE 100 - sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;)  THEN coalesce(monto_recaudado_from_income,0) ELSE 0 END) *100.0 / sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;)  THEN coalesce(monto_cuota,0) ELSE 0 END)  end porc_pago_ventanilla,
							  
					case WHEN sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;)  THEN coalesce(monto_cuota,0) ELSE 0 END) = 0 THEN NULL 
					          ELSE 100 - sum(case when numero_cuota in (1) AND estado_cuota IN (&#039;PAID&#039;)  then coalesce(monto_recaudado_from_income,0)  else NULL end )*100.0 / sum(case when numero_cuota in (1) AND estado_cuota IN (&#039;PAID&#039;)  then coalesce(monto_cuota,0) else NULL end)  end porc_pago_ventanilla_1era_cuota,
			
					case WHEN sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;)  THEN coalesce(monto_cuota,0) ELSE 0 END) = 0 THEN NULL 
					          ELSE 100 - sum(case when numero_cuota in (1,2) AND estado_cuota IN (&#039;PAID&#039;)  then coalesce(monto_recaudado_from_income,0)  else NULL end )*100.0 / sum(case when numero_cuota in (1,2) AND estado_cuota IN (&#039;PAID&#039;)  then coalesce(monto_cuota,0) else NULL end)  end porc_pago_ventanilla_2_1eras_cuotas,
							  
					case WHEN sum(CASE WHEN estado_cuota IN (&#039;PAID&#039;)  THEN coalesce(monto_cuota,0) ELSE 0 END) = 0 THEN NULL 
					          ELSE 100 - sum(case when numero_cuota in (1,2,3) AND estado_cuota IN (&#039;PAID&#039;)  then coalesce(monto_recaudado_from_income,0)  else NULL end )*100.0 / sum(case when numero_cuota in (1,2,3) AND estado_cuota IN (&#039;PAID&#039;)  then coalesce(monto_cuota,0) else NULL end)  end porc_pago_ventanilla_3_1eras_cuotas,
							  
		                max(z.dias_expirados) max_atraso,
						max(dias_expirados_pagado) max_atraso_pagado,
						max(dias_expirados_pendiente) max_atraso_pendiente,
		                max(z.flg_cuota_con_atraso) flg_atraso,
						max(z.flg_cuota_con_atraso_5_o_mas) flg_atraso_5,
						max(z.flg_cuota_con_atraso_15_o_mas) flg_atraso_15,
						max(z.flg_cuota_con_atraso_30_o_mas) flg_atraso_30,
						max(z.flg_cuota_con_atraso_60_o_mas) flg_atraso_60,
						max(z.flg_cuota_con_atraso_90_o_mas) flg_atraso_90,
						CASE WHEN max(dias_expirados_pagado) > 0 THEN 1 ELSE 0 END flg_atraso_pagado,
						CASE WHEN max(dias_expirados_pagado) >= 5 THEN 1 ELSE 0 END flg_atraso_5_pagado,
						CASE WHEN max(dias_expirados_pagado) >= 15 THEN 1 ELSE 0 END flg_atraso_15_pagado,
						CASE WHEN max(dias_expirados_pagado) >= 30 THEN 1 ELSE 0 END flg_atraso_30_pagado,
						CASE WHEN max(dias_expirados_pagado) >= 60 THEN 1 ELSE 0 END flg_atraso_60_pagado,
						CASE WHEN max(dias_expirados_pagado) >= 90 THEN 1 ELSE 0 END flg_atraso_90_pagado,
						CASE WHEN max(dias_expirados_pendiente) > 0 THEN 1 ELSE 0 END flg_atraso_pendiente,
						CASE WHEN max(dias_expirados_pendiente) >= 5 THEN 1 ELSE 0 END flg_atraso_5_pendiente,
						CASE WHEN max(dias_expirados_pendiente) >= 15 THEN 1 ELSE 0 END flg_atraso_15_pendiente,
						CASE WHEN max(dias_expirados_pendiente) >= 30 THEN 1 ELSE 0 END flg_atraso_30_pendiente,
						CASE WHEN max(dias_expirados_pendiente) >= 60 THEN 1 ELSE 0 END flg_atraso_60_pendiente,
						CASE WHEN max(dias_expirados_pendiente) >= 90 THEN 1 ELSE 0 END flg_atraso_90_pendiente,
						
						max(case when numero_cuota in (1) then flg_cuota_con_atraso else 0 end) flg_atraso_pagado_1era_cuota,
			           max(case when numero_cuota in (1) then flg_cuota_con_atraso_5_o_mas else 0 end) flg_atraso_5_pagado_1era_cuota,
					   max(case when numero_cuota in (1) then flg_cuota_con_atraso_15_o_mas else 0 end) flg_atraso_15_pagado_1era_cuota,
						max(case when numero_cuota in (1,2) then flg_cuota_con_atraso else 0 end) flg_atraso_pagado_2_1eras_cuotas,
			           max(case when numero_cuota in (1,2) then flg_cuota_con_atraso_5_o_mas else 0 end) flg_atraso_5_pagado_2_1eras_cuotas,
					   max(case when numero_cuota in (1,2) then flg_cuota_con_atraso_15_o_mas else 0 end) flg_atraso_15_pagado_2_1eras_cuotas,
					   max(case when numero_cuota in (1,2) then flg_cuota_con_atraso_30_o_mas else 0 end) flg_atraso_30_pagado_2_1eras_cuotas,
						max(case when numero_cuota in (1,2,3) then flg_cuota_con_atraso else 0 end) flg_atraso_pagado_3_1eras_cuotas,
			           max(case when numero_cuota in (1,2,3) then flg_cuota_con_atraso_5_o_mas else 0 end) flg_atraso_5_pagado_3_1eras_cuotas,
					   max(case when numero_cuota in (1,2,3) then flg_cuota_con_atraso_15_o_mas else 0 end) flg_atraso_15_pagado_3_1eras_cuotas,
					   max(case when numero_cuota in (1,2,3) then flg_cuota_con_atraso_30_o_mas else 0 end) flg_atraso_30_pagado_3_1eras_cuotas,
					   max(case when numero_cuota in (1,2,3) then flg_cuota_con_atraso_60_o_mas else 0 end) flg_atraso_60_pagado_3_1eras_cuotas,
					   
					   min(z.nro_dias_recaudados) min_nro_dias_recaudo,
					   max(z.nro_dias_recaudados) max_nro_dias_recaudo,
					   avg(z.nro_dias_recaudados) prom_nro_dias_recaudo,
					   median(z.nro_dias_recaudados) mediana_nro_dias_recaudo,
					   max(CASE WHEN estado_cuota IN (&#039;PENDING&#039;) THEN z.nro_dias_recaudados ELSE NULL END) max_nro_dias_recaudo_pendiente,
					   max(CASE WHEN estado_cuota IN (&#039;PAID&#039;) THEN z.nro_dias_recaudados ELSE NULL END) max_nro_dias_recaudo_pagado,
					   min(CASE WHEN estado_cuota IN (&#039;PAID&#039;) THEN z.nro_dias_recaudados ELSE NULL END) min_nro_dias_recaudo_pagado,		
					   avg(CASE WHEN estado_cuota IN (&#039;PAID&#039;) THEN z.nro_dias_recaudados ELSE NULL END) prom_nro_dias_recaudo_pagado,
					   median(CASE WHEN estado_cuota IN (&#039;PAID&#039;) THEN z.nro_dias_recaudados ELSE NULL END) mediana_nro_dias_recaudo_pagado,	
					   
					   max(flg_pendiente_cuota_ya_cubierta)  flg_pendiente_cuota_ya_cubierta,
					    max(nro_cuotas_con_atraso)  nro_cuotas_con_atraso,
					    max(flg_atraso_2_cuotass_o_mas)  flg_atraso_2_cuotass_o_mas,
					   max(dias_restantes) dias_restantes,
					   max(flg_tiene_pagos) flg_tiene_pagos,
					   max(flg_tiene_pago_pendiente) flg_tiene_pago_pendiente,
					   max(flg_pendiente_recaudacion_cero) flg_pendiente_recaudacion_cero,
					   max(pendiente_dif_dias_ult_dia_reacudo) pendiente_dif_dias_ult_dia_reacudo
					   
                FROM (
                    SELECT q.prestamo_id, 
	                q.cuota_id,
					q.numero_cuota_mto numero_cuota,
					max(rojos.nro_cuotas_con_atraso) nro_cuotas_con_atraso,
					CASE WHEN max(rojos.nro_cuotas_con_atraso)  > 1 THEN 1 else 0 END flg_atraso_2_cuotass_o_mas,
					max(q.Estado_Desc)  estado_cuota,
					max(q.monto_cuota_mto) monto_cuota,
					max(q.monto_efectivo_pago_mto) monto_efectivo_pago,
					max(q.monto_acum_pagado_mto) monto_acum_pagado,
					sum(CASE WHEN ii.Tipo_Desc LIKE &#039;REC_%&#039;  THEN ii.Monto_Pagado_Amt ELSE 0 END)  monto_recaudado_from_income,
					max(ii.Fecha_Thru_dt) ult_fecha_recaudada,
					max(ii.Fecha_Proceso_Dt) ult_fecha_reacudo_procesado,
					case when max(q.Estado_Desc) IN (&#039;PENDING&#039;) THEN CURRENT_DATE - max(ii.Fecha_Thru_dt) ELSE 0 END pendiente_dif_dias_ult_dia_reacudo,
					max(rojos.max_atraso_cuotas_pendientes) dias_expirados,
					CASE WHEN max(q.Estado_Desc) IN (&#039;PAID&#039;) THEN max(q.dias_expirados_mto) ELSE 0 END dias_expirados_pagado,
					CASE WHEN max(q.Estado_Desc) IN (&#039;PENDING&#039;) THEN max(q.dias_expirados_mto) ELSE 0 END dias_expirados_pendiente,
					case when max(q.dias_expirados_mto) > 0 or  max(max_atraso_cuotas_pendientes) > 0  then 1 else 0 end flg_cuota_con_atraso,
					case when max(q.dias_expirados_mto) >= 5 or  max(max_atraso_cuotas_pendientes) > 0  then 1 else 0 end flg_cuota_con_atraso_5_o_mas,
					case when max(q.dias_expirados_mto) >= 15 or  max(max_atraso_cuotas_pendientes) > 0  then 1 else 0 end flg_cuota_con_atraso_15_o_mas,
					case when max(q.dias_expirados_mto) >= 30 or  max(max_atraso_cuotas_pendientes) > 30  then 1 else 0 end flg_cuota_con_atraso_30_o_mas,
					case when max(q.dias_expirados_mto) >= 60 or  max(max_atraso_cuotas_pendientes) > 60  then 1 else 0 end flg_cuota_con_atraso_60_o_mas,
					case when max(q.dias_expirados_mto) >= 90 or  max(max_atraso_cuotas_pendientes) > 90  then 1 else 0 end flg_cuota_con_atraso_90_o_mas,
					max(q.Fecha_Pago_Dt) Fecha_Pago,
					max(q.Fecha_Efectiva_Pago_Dt) Fecha_Efectiva_Pago,
					 max(ii.Monto_Pagado_Amt) max_monto_recaudado_1_dia,
					 count(distinct(CASE WHEN ii.Tipo_Desc LIKE &#039;REC_%&#039;  THEN ingreso_id else NULL END)) nro_dias_recaudados,
					 coalesce(max(CASE WHEN ii.Tipo_Desc LIKE &#039;REC_%&#039;  THEN ii.Monto_Pagado_Amt ELSE 0 END)  *100.0 / max(q.monto_cuota_mto), 0.0) max_cobertura_recaudo_1_dia,
					 CASE WHEN sum(CASE WHEN ii.Tipo_Desc LIKE &#039;REC_%&#039;  THEN ii.Monto_Pagado_Amt ELSE 0 END) >=  max(q.monto_cuota_mto) AND  max(nro_cuotas_con_atraso) <= 1 THEN 1 else 0 END flg_cuota_ya_cubierta,
					 CASE WHEN sum(CASE WHEN ii.Tipo_Desc LIKE &#039;REC_%&#039;  THEN ii.Monto_Pagado_Amt ELSE 0 END)  >=  max(q.monto_cuota_mto) AND max(q.Estado_Desc) IN (&#039;PENDING&#039;) AND  max(nro_cuotas_con_atraso) <= 1  THEN 1 else 0 END flg_pendiente_cuota_ya_cubierta,
					 CASE WHEN sum(CASE WHEN ii.Tipo_Desc LIKE &#039;REC_%&#039;  THEN coalesce(ii.Monto_Pagado_Amt, 0) ELSE 0 END)  <= 0.0 AND max(q.Estado_Desc) IN (&#039;PENDING&#039;) THEN 1 else 0 END flg_pendiente_recaudacion_cero,
					 CASE WHEN  max(q.Estado_Desc) IN (&#039;PENDING&#039;)  THEN max(q.Fecha_Pago_Dt)  - CURRENT_DATE else 0 end dias_restantes,
					 CASE WHEN  max(q.Estado_Desc) IN (&#039;PENDING&#039;)  THEN 1 else 0 end flg_tiene_pago_pendiente,
					 CASE WHEN  max(q.Estado_Desc) IN (&#039;PAID&#039;)  THEN 1 else 0 end flg_tiene_pagos
				FROM E_DW_VIEWS.V_MST_VPC_CIMA_QUOTA q
				LEFT JOIN E_DW_VIEWS.V_MST_VPC_CIMA_INCOME ii
				ON q.cuota_id = ii.cuota_id
				LEFT JOIN (
				    SELECT prestamo_id, 
					                count(distinct(Numero_Cuota_Mto)) nro_cuotas_con_atraso,
									max(Dias_Expirados_Mto) max_atraso_cuotas_pendientes
					FROM  E_DW_VIEWS.V_MST_VPC_CIMA_QUOTA
					WHERE 1 = 1
					AND Dias_Expirados_Mto > 0
					AND Estado_desc = &#039;PENDING&#039;
					GROUP BY prestamo_id
				) rojos
				ON q.prestamo_id = rojos.prestamo_id
				LEFT JOIN (
								SELECT
								     prestamo_id,
									 numero_cuota_mto,
								     ROW_NUMBER() OVER (PARTITION BY prestamo_id ORDER BY numero_cuota_mto ASC) orden_pendiente 
								FROM E_DW_VIEWS.V_MST_VPC_CIMA_QUOTA
								WHERE Estado_Desc IN (&#039;PENDING&#039;)
				) x
				on q.prestamo_id = x.prestamo_id and q.Numero_Cuota_Mto = x.Numero_Cuota_Mto
				WHERE (
				    q.Estado_Desc IN (&#039;PAID&#039;)  OR x.orden_pendiente = 1
				) 
				
				GROUP BY q.prestamo_id, q.cuota_id, q.numero_cuota_mto
		)  z
		WHERE z.prestamo_id = 8760
		GROUP BY z.prestamo_id

Add a code snippet to your website: www.paste.org