Вы также можете сделать это с аналитическими функциями и, таким образом, избежать объединения. В большинстве случаев это будет более эффективным, но это зависит от фактических данных и индексации.
with TRanked as (
select
QID,
DeptID,
EmployeeName,
City,
dense_rank() over (
partition by CustomerID
order by EmployeeID
) as ct
from T
), TMaxRk as (
select
QID,
DeptID,
EmployeeName,
City,
max(ct) over (partition by CustomerID) as maxRk
from TRanked
)
select
QID,
DeptID,
EmployeeName,
City
from TMaxRk
where maxRk > 1;