【发布时间】:2019-08-27 18:24:46
【问题描述】:
我正在使用 TSQL 并希望根据 StatusID 字段从 Persons 的表中选择数据,如果所有人员的出院日期都在今天之前。
一个人可以有多个出院日期。
我正在尝试使用带有 ALL 的子查询来检查他们的所有出院日期是否都在今天之前,但它不起作用。
我做错了什么?
或者有没有比 SQL ALL 更好的方法?
这是我尝试过的代码示例:
select distinct per.PersonNo
from PersonInfo per, Cases cas
left join Cases cas on per.PersonNo = cas.PersonNo
where (per.StatusID = 3012
and per.PersonNo = ALL (SELECT cas.PersonNo FROM Cases cas WHERE cas.DischargeDate < getdate() ))
我知道我的一些测试数据是正确的StatusID,并且他们的所有出院日期都在今天之前,他们没有被选中,但他们应该被选中。
我的查询没有返回任何结果。
【问题讨论】:
-
如果您的子查询返回一堆不同的 PersonNo 值(例如 1、2、3 等),则查询将永远不会返回任何行。要使此查询正常工作,子查询必须为每一行返回与外部查询的 PersonNo 值相同的 PersonNo 值。