PARAMETERS [Limit (shortest N lines)] LONG; -- Default is the 10 shortest lines UPDATE (SELECT [D].[Sum], [T].[Total length] FROM [Rural] AS [D] INNER JOIN (SELECT [Road segment ID], SUM(Coalesce([Adjusted length], 0)) AS [Total length] FROM (SELECT [T1].[Road segment ID], [T1].[Address line ID], [T1].[Adjusted length] FROM [Query 1] AS [T1] LEFT JOIN [Query 1] AS [T2] ON [T1].[Road segment ID] = [T2].[Road segment ID] -- Same section of target line AND CASE WHEN [T1].[Adjusted length] > [T2].[Adjusted length] THEN TRUE -- The left hand address line is longer than the right -- (giving shorter lines a lower count) WHEN [T1].[Adjusted length] = [T2].[Adjusted length] THEN [T1].[Address line ID] > [T2].[Address line ID] -- Tiebreaker for equal lengths -- (giving lower ID a lower count) ELSE FALSE END GROUP BY [T1].[Road segment ID], [T1].[Address line ID], [T1].[Adjusted length] HAVING COUNT([T2].[Address line ID]) < Coalesce([Limit (shortest N lines)], 10) ) GROUP BY [Road segment ID] ) AS [T] ON [D].[ID] = [T].[Road segment ID] ) SET [Sum] = [Total length] ;