declare @name table
(
[name] varchar(10),
[rank] varchar(2)
)
insert into @name select 'Bill', '4'
insert into @name select 'John', '1'
insert into @name select 'Ted', '2'
insert into @name select 'Steve', '7'
insert into @name select 'Al', '10'
declare @title table
(
[rank] varchar(2),
[title] varchar(10)
)
insert into @title select '1', 'General'
insert into @title select '2', 'Lt'
insert into @title select '3', 'Sarge'
insert into @title select '10', 'Grunt'
insert into @title select 'X', 'Soldier'
select n.[name], [title] = coalesce(t.[title], x.[title])
from @name n
left join @title t on n.rank = t.rank
left join @title x on x.rank = 'X'
select [name], [title]
from
(
select n.[name], t.[title], rn = row_number() over (partition by n.[name] order by t.rank)
from @name n
left join @title t on n.rank = t.rank
or t.rank = 'X'
) a
where rn = 1
KH
Time is always against us