Если в столбце B нет нулей, вы можете использовать NOT EXISTS
:
select t.* from tablename t
where not exists (select 1 from tablename where Name = t.Name and ColumnB <> 'P')
См. демонстрацию . Результатов:
> NAME | COLUMNB
> ----: | ------:
> David | P
> David | P
> Kevin | P
> Kevin | P