Select p.uhid,p.inpatientno,dateof admission
from adt.inpatientmaster p
where p.uhid='apd1' and status <>0
此处uhid
是唯一的。我想检查患者是否在24小时内被录取,如果患者再次被录取,那么uhid
仍然相同,但inpatientno
总是会改变。
例如:
Registraionno inpatientno dateofadmission
Apd1 xy1 18/01/15
Ap1 ab2 19/01/15
答案 0 :(得分:0)
我们可以对Oracle日期进行算术运算。所以昨天是sysdate - 1
。
您需要两次查询表格。一旦找到患者记录,一旦找到以前的任何匹配。使用自联接来实现此目的:
select p1.uhid,
p1.inpatientno as current_inpatientno,
p1.dateofadmission as current_dateofadmission
p2.inpatientno as previous_inpatientno,
p2.dateofadmission as previous_dateofadmission
from adt.inpatientmaster p1
join adt.inpatientmaster p2
on p2.uhid = p1.uhid
where p1.uhid='apd1'
and p1.status <> 0
and p2.dateofadmission >= p1.dateofadmission-1
and p2.inpatientno != p1.inpatientno
/
您可能还需要限制p2.status <> 0
:不确定您的业务规则是什么。
此查询将为每个匹配返回一行。如果在相同的24小时内有多个录取,则每个组合的结果集将有一行。
答案 1 :(得分:-1)
SELECT p.uhid,
p.inpatientno,
p.dateofadmission
FROM adt.inpatientmaster p
WHERE p.status<>0
AND p.dateofadmission <= p.dateofadmission +1
AND p.uhid='APD1'