我正在使用一個(虛構的)醫院的數據庫。我有以下表格:外部全部加入和空值:每年成功的醫療注意事項#梨醫生
Admission --Name Table
Adm_ID --Number of the reception
Pat_ID --Id Patient
Date_Adm --Date reception
Date_Discharge --Discharge Date from the hospital
Health_ID --Health at the moment of discharge
Adm_Med --Name Table
Adm_ID
Med_ID --ID Medical Procedure carried out
Doc_ID --ID Doctor who carried that out.
我想製作一張表格,顯示每位醫生每年的成功醫療護理數量。成功的醫療照顧是Health_ID =20
定義(20
是Healthy
代碼)
我嘗試:
有接診醫生從1996年到2001年。爲了方便我開始只有兩年:1996年和1997年。首先,我創建了兩個獨立的表:一個給人成功的關注人數於1996年,另一個是1997年。例如,對於1996年:
SELECT Doc_ID, COUNT(aID) as [Successful 1996]
FROM
(
SELECT a.Adm_ID as aID, Doc_ID, YEAR(Date_Discharge) as yr, Health_ID
FROM Admission a, Adm_Med am
WHERE a.Adm_ID=am.Adm_ID
AND year(date_discharge)=1996
AND Health_ID=20
) temp2
GROUP BY Doc_ID
而且兩個獨立的表的結果:
然後我試圖加入他們的行列:
SELECT T1.Doc_ID, [Successful 1996], [Successful 1997]
FROM
(
SELECT Doc_ID, COUNT(aID) as [Successful 1996]
FROM
(
SELECT a.Adm_ID as aID, Doc_ID, YEAR(Date_Discharge) as yr, Health_ID
FROM Admission a, Adm_Med am
WHERE a.Adm_ID=am.Adm_ID
AND year(date_discharge)=1996
AND Health_ID=20
) temp2
GROUP BY Doc_ID
) T1
FULL OUTER JOIN
(
SELECT Doc_ID, COUNT(aID) as [Successful 1997]
FROM
(
SELECT a.Adm_ID as aID, Doc_ID, YEAR(Date_Discharge) as yr, Health_ID
FROM Admission a, Adm_Med am
WHERE a.Adm_ID=am.Adm_ID
AND year(date_discharge)=1997
AND Health_ID=20
) temp2
GROUP BY Doc_ID
) T2
ON T1.Doc_ID=T2.Doc_ID
並給出
。可以看到,七號線給出了一個成功的醫療ATT。在1997
,但NULL Doc_ID
該行,當它應該是Doc_ID
與編號82
。
我認爲FULL OUTER JOIN
存在問題,但作爲初學者,我無法弄清楚爲什麼會發生這種情況以及如何解決問題。
你從T1得到DOC_ID和T1表沒有DOC_ID = 82 – Ali7091