我有一個很好的查詢(列在下面)。我遇到的問題是我們遇到了一個病人,這個病人在兩個不同的日子裏有過活動,並且因爲我正在按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