Вы можете использовать общее табличное выражение, а затем выполнить внутреннее соединение по имени.В приведенном ниже примере я разделил команды, используя CTE, а затем присоединился, чтобы убедиться, что команды не совпадают, фамилия не совпадает, а имя совпадает.
Я тогдаиспользовал оператор объединения, чтобы показать, как можно показать игрока в другой команде.
declare @soccerteam table
(
FirstName nvarchar(50),
LastName nvarchar(50),
Team nvarchar(3)
);
insert @soccerteam (FirstName, LastName, Team)
values
('John', 'Snow', 'A'),
('Batman', 'Dies', 'B'),
('John', 'Dies', 'B');
select * from @soccerteam;
with teamB as (select FirstName, LastName, Team from @soccerteam where Team='B')
select 'Players in Team A matching Team B', a.* from @soccerteam a inner join teamB b on a.FirstName=b.FirstName and a.LastName<>b.LastName and a.Team<>b.Team
union
select 'Players in Team B matching Team A', b.* from @soccerteam a inner join teamB b on a.FirstName=b.FirstName and a.LastName<>b.LastName and a.Team<>b.Team;