zoukankan      html  css  js  c++  java
  • 最新解决的sql:病人相邻两次看病小于3天

    oracle爱好者 的北京-白水提出,需求如下图

    需要列出每个病人相邻登记id(来医院),其中下一条的登记时间-上一条的离开时间>3天。

    临近晚上下班提出的,我一路上都在思考,是不是用到了partition之类。

    我新建了表test如下

    用到了自连接

    select a.* from test a inner join test b
    on a.id=b.id 
    where a.vid=b.vid+1
    and a.st-b.en>=2

    但是这里因为a.vid=b.vid+1,最小的满足条件的就找不到了,发现这时候取b.*

    select b.* from test a inner join test b
    on a.id=b.id 
    where a.vid=b.vid+1
    and a.st-b.en>=2

    两者再次union,去掉重复的一行sum 2 11 19

    (select a.* from test a inner join test b
    on a.id=b.id 
    where a.vid=b.vid+1
    and a.st-b.en>=2)
    union
    (select b.* from test a inner join test b
    on a.id=b.id 
    where a.vid=b.vid+1
    and a.st-b.en>=2)
    

      

    搞定

    2012-12-10 更新

      

  • 相关阅读:
    Java 常见异常种类
    Oracle存储过程记录异常
    oracle定时器
    oracle生成单据号
    oracle计算时间秒数差
    oracle分组后取每组第一条数据
    was部分更新
    数据库分区
    JTA事务管理
    docker
  • 原文地址:https://www.cnblogs.com/sumsen/p/2808210.html
Copyright © 2011-2022 走看看