Sql,如何在24小时的差异中获取数据 选择p.uhid, p、 不,, p、 接收日期 来自adt.p 其中p.status0 p.dateofadmission
我们可以对Oracle日期进行算术运算。所以昨天是sysdate-1 您需要查询该表两次。一次查找患者记录,一次查找以前的匹配项。使用自连接可实现以下目的:Sql,如何在24小时的差异中获取数据 选择p.uhid, p、 不,, p、 接收日期 来自adt.p 其中p.status0 p.dateofadmission,sql,oracle,date-arithmetic,Sql,Oracle,Date Arithmetic,我们可以对Oracle日期进行算术运算。所以昨天是sysdate-1 您需要查询该表两次。一次查找患者记录,一次查找以前的匹配项。使用自连接可实现以下目的: SELECT p.uhid, p.inpatientno, p.dateofadmission FROM adt.inpatientmaster p WHERE p.status<>0 AND p.dateofadmission <= p.dateofadmission +1 AND p
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'
选择p1.uhid,
p1.住院编号作为当前的住院编号,
p1.接收日期作为当前接收日期
p2.住院人数与之前的住院人数相同,
p2.离职日期与上次离职日期相同
来自adt.p1
加入adt.p2
在p2.uhid=p1.uhid上
其中p1.uhid='apd1'
和p1.0状态
p2.DateOfAdministration>=p1.DateOfAdministration-1
和p2。不p1.1号
/
您可能还需要限制p2.status 0:不确定您的业务规则是什么
此查询将为每个匹配返回一行。如果在同一个24小时内有多个入院,则结果集的每一个组合将有一行。请更具描述性,并说明表格名称和属性,以便我们可以帮助您进行查询。您的问题不清楚。请提供样本数据和样本输出:即向我们显示符合您所需的记录不符合的标准和记录。嗯,
p.dateofadmission
Registraionno inpatientno dateofadmission
Apd1 xy1 18/01/15
Ap1 ab2 19/01/15
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'
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
/