Если бы SQL был немного умнее, вы могли бы сделать следующее, потому что вы знаете, что для данного врача может быть только одно средство.
select pv.DoctorId, dfd.ListName as ProvName, COUNT(distinct pv.PatientProfileId)
from PatientVisit pv
join DoctorFacility dfd on pv.DoctorId = dfd.DoctorFacilityId
group by pv.DoctorId
К сожалению, правило с одним значением в SQL слишком строго, и оно не позволяет вам этого делать. Правило с одним значением состоит в том, что любой столбец в списке выбора должен быть либо в предложении GROUP BY, либо в статистической функции, независимо от того, что он на самом деле не является двусмысленным в случае, подобном приведенному выше. .
Таким образом, мы можем написать следующее для соответствия SQL, хотя логически нет необходимости помещать ListName в агрегатную функцию:
select pv.DoctorId, MAX(dfd.ListName) as ProvName, COUNT(distinct pv.PatientProfileId)
from PatientVisit pv
join DoctorFacility dfd on pv.DoctorId = dfd.DoctorFacilityId
group by pv.DoctorId
Я предполагаю, что pv.DoctorId - это внешний ключ, ссылающийся на dfd.DoctorFacilityId, а не наоборот.