Here's a slightly different wording that uses CTE, which I usually find easier to read than a subquery (although, of course, your mileage may vary).
declare @Master table ( ID bigint, [user] varchar(16), Name varchar(16) ); declare @Scenario table ( ID bigint, ScenarioID bigint, [status] varchar(16) ); insert @Master values (425, 'John', 'Skyline'), (426, 'John', 'Violin'), (427, 'Joe', 'Pura'); insert @Scenario values (425, 1, 'active'), (425, 2, 'active'), (425, 3, 'done'), (426, 1, 'active'), (426, 2, 'active'), (427, 1, 'done'); with ReversedScenarioCTE as ( select ID, [status], rowNumber = row_number() over (partition by ID order by ScenarioID desc) from @Scenario ) select M.ID, M.[user], M.Name, S.[status] from @Master M inner join ReversedScenarioCTE S on M.ID = S.ID and S.rowNumber = 1;
source share