首先,我的SQL知識很少生疏。我正在嘗試生成每位患者在一段時間內都經歷過的評價報告。作爲醫生回合的一部分進行審查。以下是有關列對應表:加入三張表的SQL報告
Patients: (id, name)
Rounds: (id, patient_id, date)
Reviews: (id, round_id, review)
報告應如下所示:
Patient | Reviews
_________________________
Patient 1 | 2
_________________________
Patient 2 | 1
_________________________
Patient 3 | 0
_________________________
我嘗試以下SQL語句:
SELECT
p.name as patient,
COUNT(r.round_id) as reviews
FROM
patients as p
JOIN rounds as ro ON p.id = ro.patient_id
JOIN reviews as r ON ro.id = r.round_id
WHERE
r.review_date between '2012-02-01' AND '2012-02-29'
GROUP BY
p.name
但是,上述查詢僅返回評論計數大於1的行。即使計數爲0,我也希望它返回。
我不確定是否同樣適用於postgresql,但在T-sql中,對特定列的計數將只計數非空值,而是使用計數(*)。 – Amalea
@Amalea:在PostgreSQL中一樣。這就是標準定義'count()'函數的方式 –