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 更新

      

  • 相关阅读:
    各种计算
    C# 杂货
    Unity String格式化字符串
    unity 窗口化运行时取消边框
    WPF开机自启
    wpf 如何让当前窗口隐藏
    Unity 安卓杂货
    unity的一些杂货
    C# 项目中遇到过的坑(持续更新)
    C# 并入UI线程
  • 原文地址:https://www.cnblogs.com/sumsen/p/2808210.html
Copyright © 2011-2022 走看看