INSERT INTO tDataCollection (SequenceNo, ServiceID, BatchID, RateDescription, FromDate, ToDate, TransactionTypeID, RevenueFlag, GSTFlag, AmountExGST, GSTAmount, AmountIncGST) SELECT DC3.SequenceNo, DC3.ServiceID, DC3.BatchID, DC3.RateDescription, DC3.FromDate, DC3.ToDate, DC3.TransactionTypeID, DC3.RevenueFlag, DC3.GSTFlag, DC3.AmountExGST, DC3.GSTAmount, (DC3.AmountExGST + DC3.GSTAmount) AS "AmountIncGST" FROM ( SELECT DC2.SequenceNo, DC2.ServiceID, DC2.BatchID, DC2.RateDescription, DC2.FromDate, DC2.ToDate, DC2.TransactionTypeID, (1) AS "RevenueFlag", DC2.GSTFlag, DC1.AmountExGST, CAST((CASE WHEN DC2.GSTFlag = 'Y' THEN (DC1.AmountExGST * '+sGSTrate+') ELSE 0 END) AS money) AS "GSTAmount" FROM ( SELECT DC00.DataCollectionID, DC00.ServicetypeID, (CASE TG.Description WHEN 'RENT' THEN DC00.RentExGST WHEN 'CALL' THEN (DC00.CallExGSTRate * DC00.AmtExGST) ELSE 0 END) AS "AmountExGST" FROM ( SELECT DC0.*, (Min(tRate.Cost) / 12 * DC0.Frequency) AS "RentExGST", (Min(tRate.PartCost) / 100) AS "CallExGSTRate" FROM ( SELECT DC.ID AS "DataCollectionID", DC.AmountExGST AS "AmtExGST", tServiceID.ServiceTypeID, (CASE tServiceType.Frequency WHEN NULL THEN 1 WHEN 0 THEN 1 ELSE tServiceType.Frequency END) AS "Frequency" FROM tDataCollection DC LEFT JOIN tServiceID ON DC.ServiceID = tServiceID.ServiceID LEFT JOIN tServiceType ON tServiceID.ServiceTypeID = tServiceType.ID WHERE DC.BatchID = '+sBatchID AND DC.RevenueFlag = 0 ) AS DC0 LEFT JOIN tRate ON ((DC0.ServiceTypeID = tRate.ServiceTypeID) AND (tRate.Active = 1)) GROUP BY DC0.DataCollectionID, DC0.ServiceTypeID, DC0.Frequency ) AS DC00 LEFT JOIN tDataCollection DCX ON DC00.DataCollectionID = DCX.ID LEFT JOIN tTransactionType TT ON DCX.TransactionTypeID = TT.ID LEFT JOIN tTransactionGroup TG ON TT.TransactionGroupID = TG.ID ) AS DC1 LEFT JOIN tDataCollection DC2 ON DC1.DataCollectionID = DC2.ID ) AS DC3