我是SQL新手,需要编写复杂的查询。你能帮忙吗?
我有两张桌子。一个称为PATIENTS,另一个称为CASES。患者有“患者编号”并输入日期。 CASES有“患者编号”,“病例编号”。和“修改日期”。这两个表与“患者编号”相关联。有多个“案例号”。与一个“患者编号”相关联,因为一个患者可能有多个病例。
我需要获得以下记录。所有患者(来自PATIENTS)的所有“病例修改日期”都比某个日期更早。因此,如果日期是1999年6月20日。那么我需要所有患者,他们在06-20-1999之后没有病例被修改
我将不胜感激任何帮助。谢谢。
答案 0 :(得分:11)
SELECT
*
FROM
Patients
WHERE
PatientId NOT IN(
SELECT
PatientId
FROM
Cases
WHERE
DateModified >= '06-20-1999'
)
答案 1 :(得分:1)
SELECT patient_no
FROM patients
WHERE patient_no NOT IN (
SELECT patient_no
FROM cases
WHERE date_modified >= '1999-06-20'
)
不确定该日期格式。
答案 2 :(得分:0)
如果您需要的只是患者,并且所有病例都必须在日期之前进行修改,那么
Select * From Patients p
Where Exists -- eliminates those with no cases/or no cases before date
(Select * From cases
Where PatientNo = p.PatientNo
And ModifiedDate < [DateValue])
And Not Exists -- to eliminate patients with cases modified after date..
(Select * From cases
Where PatientNo = p.PatientNo
And ModifiedDate >= [DateValue])
如果您还需要案例数据,请使用联接:
Select * From Patients p
Join Cases c on c.PatietNo = p.PatientNo
Where c.Modifed < DateValue
编辑:从@ Larry的评论下面改变之前的评论,thx!