我有一个很好的查询(列在下面)。我遇到的问题是我们遇到了一个病人,这个病人在两个不同的日子里有过活动,并且因为我正在按PATNUM
分组,所以它只显示为一个。在sql和group中使用count个不同的case多列
我怎样才能得到它每次向计数1,如果PATNUM
和SCHDT
不同
例子:
PATNUM SCHDT
12345 30817
12345 30817
54321 30817
54321 30717
PATNUM 12345
而PATNUM 54321
应计两次应该只算一次。
我count语句是这样的:
SELECT ph.*, pi.*,
COUNT(DISTINCT CASE WHEN `SERVTYPE` IN ('INPT','INPFOP','INFOBS','IP') AND Complete ='7' THEN pi.PATNUM ELSE NULL END) AS count1,
COUNT(DISTINCT CASE WHEN `SERVTYPE` IN ('INPT','INPFOP','INFOBS','IP') AND Complete ='8' THEN pi.PATNUM ELSE NULL END) AS count2
FROM patientinfo as pi
INNER JOIN physicians as ph ON pi.SURGEON=ph.PName
WHERE PID NOT IN ('1355','988','767','1289','484','2784')
GROUP BY SURGEON
ORDER BY Dept,SURGEON ASC
在大多数企业SQL引擎中,这会引发错误。您应该将所有不属于聚合函数的字段分组。这必须是mySQL或某种引擎,它通过语法支持非标准组。通过patnum和schdt添加到您的小组中,您可能会接近,但我仍然害怕patentinfo和医生中未分组的其他数据。 – xQbert