Sql 我如何选择不管理任何患者的医生

Sql 我如何选择不管理任何患者的医生,sql,join,select,case,ssms,Sql,Join,Select,Case,Ssms,在我的数据库中,没有任何医生没有看过任何病人,所以我希望在第一列下有一个文本“没有医生没有不收治任何病人” SELECT d.FistName + ' ' + d.LastName as 'Doctors who has not admitted any patients COUNT(w.PatientID) as [Patient count] FROM Doctors d left join Visits v on d.DoctorI

在我的数据库中,没有任何医生没有看过任何病人,所以我希望在第一列下有一个文本“没有医生没有不收治任何病人”

   SELECT d.FistName + ' ' + d.LastName as 'Doctors who has not admitted any patients      
      COUNT(w.PatientID) as [Patient count] 
      FROM Doctors d 
      left join Visits v on d.DoctorID=w.DoctorID 
     GROUP BY d.FistName + ' ' + d.LastName HAVING COUNT(DISTINCT PatientID) = 0;

不知道你在问什么,但如果你想找到没有病人的医生,我会这样写你的问题:

select
<some stuff>
from
doctors d
left join visits v
 on v.doctorid = v.doctorid
where
 v.doctorid is null

这将从医生表中获取所有在就诊表中没有任何匹配项的记录,无需进行任何聚合。这是一个相当标准的模式。您也可以不存在类型查询。

您最好按d.DoctorID分组。否则两个同名的医生将作为一个单独的医生出现。我在这里没有看到任何问题?我真的建议不要使用需要标识的列名;当然,没有收治任何病人的医生的名字太长了。至于你有什么,有什么问题吗?此外,您的文件中有一个不幸的名字印刷错误code@Larnu起初我没有看到印刷错误,但现在我看不到了。这个问题不好,1。请提供样品数据。2.您知道您的查询有很多错误@Larnu已经指出了其中的一些,同样在计数之前,你丢失了一个逗号,你用了一种错误的方式使用了别名两个表和三个别名。。。另外,我从你之前的问题中看到,你没有被警告过问题的质量。欢迎来到Stack Overflow,请提供更多样本数据和预期结果数据,为我们提供更好的问题。干杯v-w的一个错误取自问题。。。可能会让人困惑。。。两个表三个别名直接从OP的查询中查看到,没有注意到连接中的w别名,只是选择列表,但我怀疑它应该是v.doctor id。编辑了帖子。不清楚的帖子需要进行向下投票、关闭投票和评论,而不是回答。