我無法確定要使用哪種型別的連接,或者連接是否是解決此問題的正確方法。我有兩張桌子:
Patients Table
ID | month_joined
--------------------
A110 | jan 2013
A111 | feb 2013
A112 | april 2013
Appointments Table
ID | month_of_appt | number_of_appts
--------------------------------------
A110 | jan 2013 | 2
A110 | feb 2013 | 1
A111 | april 2013 | 3
A112 | dec 2013 | 1
我希望能夠查看在給定月份加入的患者人數(month_joined來自患者表的計數)和每個月的約會次數(number_of_appts來自約會表)。當我使用左連接時,輸出如下所示:
Patients & Appointments
ID | month_joined | month_of_appt | number_of_appts
-----------------------------------------------------
A110 | jan 2013 | jan 2013 | 2
A110 | jan 2013 | feb 2013 | 1
A111 | feb 2013 | april 2013 | 3
A112 | april 2013 | dec 2013 | 1
所以一切看起來都很好,除了month_joined對于任何一個在一個多月內預約過的患者來說,該列都是重復的,所以如果我想要 的計數month_joined,它比它應該的要大。
我該如何計算準確的計數,month_joined同時仍然擁有每個約會月份和每月約會次數的資訊?
uj5u.com熱心網友回復:
根據輸出,表似乎只在ID列上連接。要從表患者視窗中獲取“重復”的行數 COUNT 可以使用:
SELECT *, COUNT(*) OVER(PARTITION BY p.ID, p.month_joined) AS number_of_appts
FROM Patients p
LEFT JOIN Appointments a
ON p.ID = a.ID
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516143.html
標籤:sql加入左连接
