Tengo una consulta que utilizo para generar un informe de pago.
Hay un campo llamado Amortiz, que es la amortización de un anticipo que se da al inicio de un contrato de obra.
El anticipo que se otorga es en este caso del 20% del monto del contrato, por lo que la amortización en cada periodo de obra es el 20% del monto del periodo.
En la columna saldo_anticipo se muestra el monto pendiente por amortizar.
Lo que requiero es que en el último periodo la amortización sea igual al penúltimo saldo del anticipo antes de que el saldo sea 0.
Como se puede ver en la imagen, la amortización debe ser de $51.54 y no de $2,466.55 que corresponderían al 20%, y que corresponde con el saldo del anticipo en el penúltimo periodo (11).
Pongo también la instrucción de SQL que utilizo para obtener esta tabla. Cabe mencionar que los datos los obtengo de otras consultas.
Código: Seleccionar todo
SELECT Tmp.Periodo, Tmp.Monto, Tmp.Anticipo, Tmp.Pct_Amortiz,
Sum(Imp_Aut) AS Imp_Per,
Imp_Per*Pct_Amortiz AS Amortiz,
(SELECT SUM(qryGen.Imp_Aut) AS Imp_Acum
FROM qryGen
WHERE qryGen.Periodo<= Tmp.Periodo) AS Imp_Acum,
SWITCH(
(SELECT SUM(qryGen.Imp_Aut)*Pct_Amortiz AS Amortiz_Acum FROM qryGen WHERE qryGen.Periodo<=Tmp.Periodo GROUP BY qryGen.Pct_Amortiz)>Tmp.Anticipo,Tmp.Anticipo,
(SELECT SUM(qryGen.Imp_Aut)*Pct_Amortiz AS Amortiz_Acum FROM qryGen WHERE qryGen.Periodo<=Tmp.Periodo GROUP BY qryGen.Pct_Amortiz)<Tmp.Anticipo,
(SELECT SUM(qryGen.Imp_Aut)*Pct_Amortiz AS Amortiz_Acum
FROM qryGen
WHERE qryGen.Periodo<=Tmp.Periodo
GROUP BY qryGen.Pct_Amortiz) ) AS Amortiz_Acum,
Monto-Imp_Acum AS Saldo,
SWITCH(
Anticipo-Amortiz_Acum<=0,0,
Anticipo-Amortiz_Acum>0,Anticipo-Amortiz_Acum) AS Saldo_Anticipo,
Imp_Per-Amortiz AS Adeudo,
Imp_Per-Amortiz AS Subtotal,
Subtotal*0.16 AS IVA,
Subtotal+IVA AS TotFactura
FROM qryGen AS Tmp
WHERE Tmp.Period=-1 AND Tmp.Periodo IS Not Null
GROUP BY Tmp.Periodo, Tmp.Monto, Tmp.Anticipo, Tmp.Pct_Amortiz;
La separación es solamente para saber como obtengo cada uno de los campos de la tabla.
Sin más por el momento, agradezco su amable atención.
Gracias