INSERT INTO tDataCollection (SequenceNo, ServiceID, ServiceType, TxnDate, TxnTime, TransactionTypeID, GSTFlag, AmountExGST, GSTAmount, AmountIncGST, FromDate, ToDate, BatchID) SELECT DC.SequenceNo, DC.ServiceID, DC.ServiceType, DC.TxnDate, DC.TxnTime, DC.TransactionTypeID, DC.GSTFlag, (DC.AmountExGST * -1) AS "AmountExGST", (DC.GSTAmount * -1) AS "GSTAmount ", (DC.AmountIncGST * -1) AS "AmountIncGST ", DC.FromDate, DC.ToDate, DC.BatchID FROM tDataCollection DC LEFT JOIN tFaultDetails FD ON ((DC.ServiceID = FD.ServiceID) AND (DC.BatchID = FD.BatchID)) WHERE DC.BatchID = 11111 AND ((FD.AvailabilityTargetMet = NULL) OR (FD.AvailabilityTargetMet = 0)) // Now update the values stored in the tBatch table. qryStringList.Clear; qryStringList.Add('UPDATE tBatch'); qryStringList.Add('SET GSTAmount = BatchRate.TotalGST,'); qryStringList.Add(' TotalPayable = BatchRate.TotalIncGST'); qryStringList.Add('FROM (SELECT Sum(tDataCollection.AmountIncGST) '+ 'AS "TotalIncGST",'); qryStringList.Add(' Sum(tDataCollection.GSTAmount) AS "TotalGST"'); qryStringList.Add('FROM tDataCollection'); qryStringList.Add('WHERE tDataCollection.BatchID = '+ sBatch + ') AS BatchRate'); qryStringList.Add('WHERE tBatch.ID = '+ sBatch); qryDC.Close; qryDC.SQL := qryStringList; qryDC.ExecSQL;