/* Original Save for Non-Splits */ qryStringList.Add('INSERT INTO tTransaction'); qryStringList.Add('(DataRefID, SequenceNo, Duration, CallCode, BatchID, '+ 'TxnDate, AmountExGST, GSTAmount, AmountIncGST, FromDate, ToDate,'); qryStringList.Add(' TransactionTypeID, StatusID, GSTFlag, ActivityID, '+ 'CentreID, ServiceID, SubledgerID, CustomerCentreID,'); qryStringList.Add(' CustomerActivityID, CustomerElementID, '+ 'CustomerSubledgerID, LocationID, UpEnd, UpMDF, DownEnd, DownMDF, Length, '+ 'PersonID,'); qryStringList.Add(' ServiceTypeID, RevenueFlag, ElementID, CustomerID, '+ 'DialledNumberID, OriginID, DestinationID, RateDescriptionID, Peak,'); qryStringList.Add(' Var01, Var02, Var03, Var04, Var05, Var06, Var07, Var08, '+ 'Var09, Var10, Var11, Var12, Var13, Var14, Var15)'); qryStringList.Add('SELECT tDataCollection.ID AS DataRefID, '+ 'tDataCollection.SequenceNo, tDataCollection.Duration, '+ 'tDataCollection.CallCode, tDataCollection.BatchID,'); qryStringList.Add(' (CASE tDataCollection.TxnDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(tDataCollection.TxnDate,7,4) + '+ 'SUBSTRING(tDataCollection.TxnDate,4,2) + '+ 'SUBSTRING(tDataCollection.TxnDate,1,2) + '+ '(CASE tDataCollection.TxnTime WHEN NULL THEN '''' ELSE '' '' + '+ 'tDataCollection.TxnTime END) END) AS TxnDate,'); qryStringList.Add(' tDataCollection.AmountExGST, tDataCollection.GSTAmount, '+ 'tDataCollection.AmountIncGST,'); qryStringList.Add(' (CASE tDataCollection.FromDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(tDataCollection.FromDate,7,4) + '+ 'SUBSTRING(tDataCollection.FromDate,4,2) + '+ 'SUBSTRING(tDataCollection.FromDate,1,2) END) AS FromDate,'); qryStringList.Add(' (CASE tDataCollection.ToDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(tDataCollection.ToDate,7,4) + '+ 'SUBSTRING(tDataCollection.ToDate,4,2) + '+ 'SUBSTRING(tDataCollection.ToDate,1,2) END) AS ToDate,'); qryStringList.Add(' tDataCollection.TransactionTypeID, '+ 'tDataCollection.StatusID, (CASE tDataCollection.GSTFlag WHEN ''Y'' THEN 1 '+ 'ELSE 0 END) AS GSTFlag,'); qryStringList.Add(' tServiceID.ActivityID, tServiceID.CentreID, '+ 'tServiceID.ID AS ServiceID, tServiceID.SubledgerID, '+ 'tServiceID.CustomerCentreID,'); qryStringList.Add(' tServiceID.CustomerActivityID, '+ 'tServiceID.CustomerElementID, tServiceID.CustomerSubledgerID, '+ 'tServiceID.LocationID, tServiceID.UpEnd,'); qryStringList.Add(' tServiceID.UpMDF, tServiceID.DownEnd, '+ 'tServiceID.DownMDF, tServiceID.Length, tServiceID.PersonID, '+ 'tServiceType.ID AS ServiceTypeID,'); qryStringList.Add(' (0) AS RevenueFlag, tServiceType.ExpenseElementID AS ElementID,'); qryStringList.Add(' tCustomer.ID AS CustomerID, '+ 'tDialledNumber.ID as DialledNumberID, tOrigin.ID as OriginID, '+ 'tDestination.ID as DestinationID, tRateDescription.ID AS '+ 'RateDescriptionID, tDataCollection.Peak,'); qryStringList.Add(' tDataCollection.Var01, tDataCollection.Var02, '+ 'tDataCollection.Var03,'); qryStringList.Add(' tDataCollection.Var04, tDataCollection.Var05, '+ 'tDataCollection.Var06, tDataCollection.Var07, tDataCollection.Var08, '+ 'tDataCollection.Var09,'); qryStringList.Add(' tDataCollection.Var10, tDataCollection.Var11, '+ 'tDataCollection.Var12, tDataCollection.Var13, tDataCollection.Var14, '+ 'tDataCollection.Var15'); qryStringList.Add('FROM ((((tDataCollection '+ 'LEFT JOIN ((tServiceID '+ 'LEFT JOIN (tCentre '+ 'LEFT JOIN (tDepartment '+ 'LEFT JOIN (tGroup '+ 'LEFT JOIN tCustomer ON tGroup.CustomerID = tCustomer.ID) '+ 'ON tDepartment.GroupID = tGroup.ID)'); qryStringList.Add(' ON tCentre.DepartmentID = tDepartment.ID) '+ 'ON tServiceID.CustomerCentreID = tCentre.ID)'); qryStringList.Add(' LEFT JOIN tServiceType '+ 'ON tServiceID.ServiceTypeID = tServiceType.ID) '+ 'ON tDataCollection.ServiceID = tServiceID.ServiceID)'); qryStringList.Add(' LEFT JOIN tDialledNumber '+ 'ON tDataCollection.DialledNumber = tDialledNumber.Description)'); qryStringList.Add(' LEFT JOIN tOrigin '+ 'ON tDataCollection.Origin = tOrigin.Description)'); qryStringList.Add(' LEFT JOIN tDestination '+ 'ON tDataCollection.Destination = tDestination.Description)'); qryStringList.Add(' LEFT JOIN tRateDescription '+ 'ON tDataCollection.RateDescription = tRateDescription.Description'); qryStringList.Add('WHERE tServiceID.ServiceID IS NOT NULL'); qryStringList.Add('AND tDataCollection.BatchID = '+sBatch); qryStringList.Add('AND tServiceType.SplitService <> 1'); qryStringList.Add('AND tServiceType.ExpenseElementID IS NOT NULL'); /* Revised Save for Non-Splits - 1 */ qryStringList.Add('INSERT INTO tTransaction'); qryStringList.Add('(DataRefID, SequenceNo, Duration, CallCode, BatchID, '+ 'TxnDate, AmountExGST, GSTAmount, AmountIncGST, FromDate, ToDate,'); qryStringList.Add(' TransactionTypeID, StatusID, GSTFlag, ActivityID, '+ 'CentreID, ServiceID, SubledgerID, CustomerCentreID,'); qryStringList.Add(' CustomerActivityID, CustomerElementID, '+ 'CustomerSubledgerID, LocationID, UpEnd, UpMDF, DownEnd, DownMDF, Length, '+ 'PersonID,'); qryStringList.Add(' ServiceTypeID, RevenueFlag, ElementID, CustomerID, '+ 'DialledNumberID, OriginID, DestinationID, RateDescriptionID, Peak,'); qryStringList.Add(' Var01, Var02, Var03, Var04, Var05, Var06, Var07, Var08, '+ 'Var09, Var10, Var11, Var12, Var13, Var14, Var15)'); qryStringList.Add('SELECT DC.ID AS DataRefID, DC.SequenceNo, DC.Duration, '+ 'DC.CallCode, DC.BatchID,'); qryStringList.Add(' (CASE DC.TxnDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(DC.TxnDate,7,4) + SUBSTRING(DC.TxnDate,4,2) + '+ 'SUBSTRING(DC.TxnDate,1,2) + (CASE DC.TxnTime WHEN NULL '+ 'THEN '''' ELSE '' '' + DC.TxnTime END) END) AS TxnDate,'); qryStringList.Add(' DC.AmountExGST, DC.GSTAmount, DC.AmountIncGST,'); qryStringList.Add(' (CASE DC.FromDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(DC.FromDate,7,4) + SUBSTRING(DC.FromDate,4,2) + '+ 'SUBSTRING(DC.FromDate,1,2) END) AS FromDate,'); qryStringList.Add(' (CASE DC.ToDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(DC.ToDate,7,4) + SUBSTRING(DC.ToDate,4,2) + '+ 'SUBSTRING(DC.ToDate,1,2) END) AS ToDate,'); qryStringList.Add(' DC.TransactionTypeID, DC.StatusID, '+ '(CASE DC.GSTFlag WHEN ''Y'' THEN 1 ELSE 0 END) AS GSTFlag,'); qryStringList.Add(' tServiceID.ActivityID, tServiceID.CentreID, '+ 'tServiceID.ID AS ServiceID, tServiceID.SubledgerID, '+ 'tServiceID.CustomerCentreID,'); qryStringList.Add(' tServiceID.CustomerActivityID, '+ 'tServiceID.CustomerElementID, tServiceID.CustomerSubledgerID, '+ 'tServiceID.LocationID, tServiceID.UpEnd,'); qryStringList.Add(' tServiceID.UpMDF, tServiceID.DownEnd, '+ 'tServiceID.DownMDF, tServiceID.Length, tServiceID.PersonID, '+ 'tServiceType.ID AS ServiceTypeID,'); qryStringList.Add(' (0) AS RevenueFlag, tServiceType.ExpenseElementID AS ElementID,'); qryStringList.Add(' tGroup.CustomerID, tDialledNumber.ID as DialledNumberID,'+ ' tOrigin.ID as OriginID, tDestination.ID as DestinationID, '+ 'tRateDescription.ID AS RateDescriptionID, DC.Peak,'); qryStringList.Add(' DC.Var01, DC.Var02, DC.Var03, DC.Var04, DC.Var05,'); qryStringList.Add(' DC.Var06, DC.Var07, DC.Var08, DC.Var09, DC.Var10,'); qryStringList.Add(' DC.Var11, DC.Var12, DC.Var13, DC.Var14, DC.Var15'); qryStringList.Add('FROM ((((((SELECT tDataCollection.*, ''Code'' = CASE'); qryStringList.Add(' WHEN tDataCollection.ServiceType IS NULL THEN '+ 'tServiceType.Code ELSE tDataCollection.ServiceType END'); qryStringList.Add('FROM (tDataCollection'); qryStringList.Add('LEFT JOIN tServiceID '+ 'ON tDataCollection.ServiceID = tServiceID.ServiceID)'); qryStringList.Add('LEFT JOIN tServiceType '+ 'ON tServiceID.ServiceTypeID = tServiceType.ID'); qryStringList.Add('WHERE tDataCollection.BatchID = '+sBatch); qryStringList.Add('AND tServiceID.ServiceID IS NOT NULL) AS DC'); qryStringList.Add('LEFT JOIN tServiceType '+ 'ON DC.Code = tServiceType.Code)'); qryStringList.Add('LEFT JOIN (tServiceID LEFT JOIN (tCentre '+ 'LEFT JOIN (tDepartment LEFT JOIN tGroup ON tDepartment.GroupID = tGroup.ID)'); qryStringList.Add('ON tCentre.DepartmentID = tDepartment.ID) '+ 'ON tServiceID.CustomerCentreID = tCentre.ID) '+ 'ON DC.ServiceID = tServiceID.ServiceID)'); qryStringList.Add('LEFT JOIN tDialledNumber '+ 'ON DC.DialledNumber = tDialledNumber.Description)'); qryStringList.Add('LEFT JOIN tOrigin ON DC.Origin = tOrigin.Description)'); qryStringList.Add('LEFT JOIN tDestination '+ 'ON DC.Destination = tDestination.Description)'); qryStringList.Add('LEFT JOIN tRateDescription '+ 'ON DC.RateDescription = tRateDescription.Description'); qryStringList.Add('WHERE tServiceID.ServiceID IS NOT NULL'); qryStringList.Add('AND tServiceType.SplitService <> 1'); qryStringList.Add('AND tServiceType.ExpenseElementID IS NOT NULL'); /* Original Test for Splits */ qryDC.SQL.Add('SELECT COUNT(*) AS TotalCount'); qryDC.SQL.Add('FROM ((tDataCollection'); qryDC.SQL.Add('LEFT JOIN tServiceID '+ 'ON tDataCollection.ServiceID = tServiceID.ServiceID)'); qryDC.SQL.Add('LEFT JOIN tServiceType '+ 'ON tServiceID.ServiceTypeID = tServiceType.ID)'); qryDC.SQL.Add('CROSS JOIN tServiceSplit'); qryDC.SQL.Add('WHERE tDataCollection.BatchID = '+sBatch); qryDC.SQL.Add('AND tServiceType.SplitService = 1'); qryDC.SQL.Add('AND tServiceID.ID = tServiceSplit.ServiceID'); /* Revised Test for Splits */ qryDC.SQL.Add('SELECT COUNT(*) AS TotalCount'); qryDC.SQL.Add('FROM ((SELECT tDataCollection.*, tServiceID.ID AS SID, '+ '''Code'' = CASE'); qryDC.SQL.Add(' WHEN tDataCollection.ServiceType IS NULL THEN '+ 'tServiceType.Code ELSE tDataCollection.ServiceType END'); qryDC.SQL.Add('FROM (tDataCollection'); qryDC.SQL.Add('LEFT JOIN tServiceID '+ 'ON tDataCollection.ServiceID = tServiceID.ServiceID)'); qryDC.SQL.Add('LEFT JOIN tServiceType '+ 'ON tServiceID.ServiceTypeID = tServiceType.ID'); qryDC.SQL.Add('WHERE tDataCollection.BatchID = '+sBatch); qryDC.SQL.Add('AND tServiceID.ServiceID IS NOT NULL) AS DC'); qryDC.SQL.Add('LEFT JOIN tServiceType ON DC.Code = tServiceType.Code)'); qryDC.SQL.Add('CROSS JOIN tServiceSplit'); qryDC.SQL.Add('WHERE tServiceType.SplitService = 1'); qryDC.SQL.Add('AND DC.SID = tServiceSplit.ServiceID'); /* Original SQL for Splits */ if lUseChunks then begin qryStringList.Add('SELECT TOP '+IntToStr(BIGGESTCHUNK)+ ' tDataCollection.ID AS DataRefID,'); end else begin qryStringList.Add('SELECT tDataCollection.ID AS DataRefID,'); end; qryStringList.Add('tDataCollection.SequenceNo, tDataCollection.Duration, '+ 'tDataCollection.CallCode, tDataCollection.ServiceID, tDataCollection.BatchID,'); qryStringList.Add(' (CASE tDataCollection.TxnDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(tDataCollection.TxnDate,7,4) + '+ 'SUBSTRING(tDataCollection.TxnDate,4,2) + '+ 'SUBSTRING(tDataCollection.TxnDate,1,2) + '+ '(CASE tDataCollection.TxnTime WHEN NULL THEN '''' ELSE '' '' + '+ 'tDataCollection.TxnTime END) END) AS TxnDate,'); qryStringList.Add(' tDataCollection.AmountExGST, tDataCollection.GSTAmount, '+ 'tDataCollection.AmountIncGST,'); qryStringList.Add(' (CASE tDataCollection.FromDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(tDataCollection.FromDate,7,4) + '+ 'SUBSTRING(tDataCollection.FromDate,4,2) + '+ 'SUBSTRING(tDataCollection.FromDate,1,2) END) AS FromDate,'); qryStringList.Add(' (CASE tDataCollection.ToDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(tDataCollection.ToDate,7,4) + '+ 'SUBSTRING(tDataCollection.ToDate,4,2) + '+ 'SUBSTRING(tDataCollection.ToDate,1,2) END) AS ToDate,'); qryStringList.Add(' tDataCollection.TransactionTypeID, '+ 'tDataCollection.StatusID, (CASE tDataCollection.GSTFlag WHEN ''Y'' THEN 1 '+ 'ELSE 0 END) AS GSTFlag,'); qryStringList.Add(' tServiceID.ActivityID, tServiceID.CentreID, '+ 'tServiceID.ID AS SID, tServiceID.SubledgerID, '+ 'tServiceID.CustomerCentreID,'); qryStringList.Add(' tServiceID.CustomerActivityID, '+ 'tServiceID.CustomerElementID, tServiceID.CustomerSubledgerID, '+ 'tServiceID.LocationID, tServiceID.UpEnd,'); qryStringList.Add(' tServiceID.UpMDF, tServiceID.DownEnd, '+ 'tServiceID.DownMDF, tServiceID.Length, tServiceID.PersonID, '+ 'tServiceType.ID AS ServiceTypeID, tServiceType.Code,'); // Amend??? qryStringList.Add(' tTransactionGroup.Description AS TransactionGroup, '+ 'tServiceType.RevenueElementID, tServiceType.ExpenseElementID,'); qryStringList.Add(' tCustomer.ID AS CustomerID, '+ 'tDialledNumber.ID as DialledNumberID, tOrigin.ID as OriginID, '+ 'tDestination.ID as DestinationID, tRateDescription.ID AS RateDescriptionID,'); qryStringList.Add(' tDataCollection.Var01, tDataCollection.Var02, '+ 'tDataCollection.Var03,'); qryStringList.Add(' tDataCollection.Var04, tDataCollection.Var05, '+ 'tDataCollection.Var06, tDataCollection.Var07, tDataCollection.Var08, '+ 'tDataCollection.Var09,'); qryStringList.Add(' tDataCollection.Var10, tDataCollection.Var11, '+ 'tDataCollection.Var12, tDataCollection.Var13, tDataCollection.Var14, '+ 'tDataCollection.Var15'); qryStringList.Add('FROM ((((((tDataCollection '+ 'LEFT JOIN ((tServiceID '+ 'LEFT JOIN (tCentre '+ 'LEFT JOIN (tDepartment '+ 'LEFT JOIN (tGroup '+ 'LEFT JOIN tCustomer ON tGroup.CustomerID = tCustomer.ID) '+ 'ON tDepartment.GroupID = tGroup.ID)'); qryStringList.Add(' ON tCentre.DepartmentID = tDepartment.ID) '+ 'ON tServiceID.CustomerCentreID = tCentre.ID)'); qryStringList.Add(' LEFT JOIN tServiceType '+ 'ON tServiceID.ServiceTypeID = tServiceType.ID) '+ 'ON tDataCollection.ServiceID = tServiceID.ServiceID)'); qryStringList.Add(' LEFT JOIN tDialledNumber '+ 'ON tDataCollection.DialledNumber = tDialledNumber.Description)'); qryStringList.Add(' LEFT JOIN tOrigin '+ 'ON tDataCollection.Origin = tOrigin.Description)'); qryStringList.Add(' LEFT JOIN tDestination '+ 'ON tDataCollection.Destination = tDestination.Description)'); qryStringList.Add(' LEFT JOIN tRateDescription '+ 'ON tDataCollection.RateDescription = tRateDescription.Description)'); qryStringList.Add(' LEFT JOIN tTransactionType '+ 'ON tDataCollection.TransactionTypeID = tTransactionType.ID)'); qryStringList.Add(' LEFT JOIN tTransactionGroup '+ 'ON tTransactionType.TransactionGroupID = tTransactionGroup.ID'); qryStringList.Add('WHERE tServiceID.ServiceID IS NOT NULL'); qryStringList.Add('AND tDataCollection.BatchID = '+sBatch); qryStringList.Add('AND tServiceType.SplitService = 1'); if lUseChunks then begin qryStringList.Add('ORDER BY tDataCollection.ID'); end else begin qryStringList.Add('ORDER BY tDataCollection.ServiceID'); end; /* Revised SQL for Splits - 1 */ if lUseChunks then begin qryStringList.Add('SELECT TOP '+IntToStr(BIGGESTCHUNK)+ ' DC.ID AS DataRefID,'); end else begin qryStringList.Add('SELECT DC.ID AS DataRefID,'); end; qryStringList.Add(' DC.SequenceNo, DC.Duration, DC.CallCode, '+ 'DC.ServiceID, DC.BatchID,'); qryStringList.Add(' (CASE DC.TxnDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(DC.TxnDate,7,4) + SUBSTRING(DC.TxnDate,4,2) + '+ 'SUBSTRING(DC.TxnDate,1,2) + (CASE DC.TxnTime WHEN NULL '+ 'THEN '''' ELSE '' '' + DC.TxnTime END) END) AS TxnDate,'); qryStringList.Add(' DC.AmountExGST, DC.GSTAmount, DC.AmountIncGST,'); qryStringList.Add(' (CASE DC.FromDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(DC.FromDate,7,4) + SUBSTRING(DC.FromDate,4,2) + '+ 'SUBSTRING(DC.FromDate,1,2) END) AS FromDate,'); qryStringList.Add(' (CASE DC.ToDate WHEN NULL THEN NULL ELSE '+ 'SUBSTRING(DC.ToDate,7,4) + SUBSTRING(DC.ToDate,4,2) + '+ 'SUBSTRING(DC.ToDate,1,2) END) AS ToDate,'); qryStringList.Add(' DC.TransactionTypeID, DC.StatusID, '+ '(CASE DC.GSTFlag WHEN ''Y'' THEN 1 ELSE 0 END) AS GSTFlag,'); qryStringList.Add(' tServiceID.ActivityID, tServiceID.CentreID, '+ 'tServiceID.ID AS SID, tServiceID.SubledgerID, tServiceID.CustomerCentreID,'); qryStringList.Add(' tServiceID.CustomerActivityID, '+ 'tServiceID.CustomerElementID, tServiceID.CustomerSubledgerID, '+ 'tServiceID.LocationID, tServiceID.UpEnd,'); qryStringList.Add(' tServiceID.UpMDF, tServiceID.DownEnd, '+ 'tServiceID.DownMDF, tServiceID.Length, tServiceID.PersonID, '+ 'tServiceType.ID AS ServiceTypeID,'); // 'tServiceType.ID AS ServiceTypeID, tServiceType.Code,'); // See NB below. qryStringList.Add(' tTransactionGroup.Description AS TransactionGroup, '+ 'tServiceType.RevenueElementID, tServiceType.ExpenseElementID,'); qryStringList.Add(' tGroup.CustomerID, '+ 'tDialledNumber.ID as DialledNumberID, tOrigin.ID as OriginID, '+ 'tDestination.ID as DestinationID, '+ 'tRateDescription.ID AS RateDescriptionID, DC.Peak,'); qryStringList.Add(' DC.Var01, DC.Var02, DC.Var03, DC.Var04, DC.Var05,'); qryStringList.Add(' DC.Var06, DC.Var07, DC.Var08, DC.Var09, DC.Var10,'); qryStringList.Add(' DC.Var11, DC.Var12, DC.Var13, DC.Var14, DC.Var15'); qryStringList.Add('FROM ((((((((SELECT tDataCollection.*, ''Code'' = CASE'); qryStringList.Add(' WHEN tDataCollection.ServiceType IS NULL '+ 'THEN tServiceType.Code ELSE tDataCollection.ServiceType END'); qryStringList.Add('FROM (tDataCollection'); qryStringList.Add('LEFT JOIN tServiceID '+ 'ON tDataCollection.ServiceID = tServiceID.ServiceID)'); qryStringList.Add('LEFT JOIN tServiceType '+ 'ON tServiceID.ServiceTypeID = tServiceType.ID'); qryStringList.Add('WHERE tDataCollection.BatchID = '+sBatch); qryStringList.Add('AND tServiceID.ServiceID IS NOT NULL) AS DC'); qryStringList.Add('LEFT JOIN tServiceType '+ 'ON DC.Code = tServiceType.Code)'); qryStringList.Add('LEFT JOIN (tServiceID '+ 'LEFT JOIN (tCentre '+ 'LEFT JOIN (tDepartment '+ 'LEFT JOIN tGroup ON tDepartment.GroupID = tGroup.ID)'); qryStringList.Add('ON tCentre.DepartmentID = tDepartment.ID) '+ 'ON tServiceID.CustomerCentreID = tCentre.ID) '+ 'ON DC.ServiceID = tServiceID.ServiceID)'); qryStringList.Add('LEFT JOIN tDialledNumber '+ 'ON DC.DialledNumber = tDialledNumber.Description)'); qryStringList.Add('LEFT JOIN tOrigin ON DC.Origin = tOrigin.Description)'); qryStringList.Add('LEFT JOIN tDestination '+ 'ON DC.Destination = tDestination.Description)'); qryStringList.Add('LEFT JOIN tRateDescription '+ 'ON DC.RateDescription = tRateDescription.Description)'); qryStringList.Add('LEFT JOIN tTransactionType '+ 'ON DC.TransactionTypeID = tTransactionType.ID)'); qryStringList.Add('LEFT JOIN tTransactionGroup '+ 'ON tTransactionType.TransactionGroupID = tTransactionGroup.ID'); qryStringList.Add('WHERE tServiceID.ServiceID IS NOT NULL'); qryStringList.Add('AND tServiceType.SplitService = 1'); if lUseChunks then begin qryStringList.Add('ORDER BY DC.ID'); end else begin qryStringList.Add('ORDER BY DC.ServiceID'); end;