2016-01-20 44 views
0
Select p.uhid,p.inpatientno,dateof admission 
from adt.inpatientmaster p 
where p.uhid='apd1' and status <>0 

这里uhid是唯一的。我想检查一个病人在24小时之内入院,如果病人再次入院,那么uhid保持不变,但inpatientno总是改变。Sql,如何获取24小时内的差异数据

例:

Registraionno inpatientno dateofadmission 
Apd1   xy1   18/01/15 
Ap1   ab2   19/01/15 
+0

请更具描述性地说明表名称和属性,以便我们帮助您查询 –

+0

您的问题尚不清楚。 –

+0

请提供样本数据样本输出:即向我们显示符合您所需条件的记录和不符合条件的记录。 – APC

回答

-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' 
+0

嗯,'p.dateofadmission <= p.dateofadmission + 1'总会是真的。 – APC

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小时内有几次录取,则每个组合的结果集都会有一行。

相关问题