首页 > 解决方案 > 蜂巢确定具有重叠日期的记录

问题描述

我有如下表A,需要根据事务ID查找重叠日期

同一交易ID的多条记录,需要查找是否有任何重叠的日期并返回这些记录

在此处输入图像描述

标签: sqlhadoophive

解决方案


你可以试试exists

select t.*
from t
where exists (select 1
              from t t2
              where t2.transactionId = t.transactionId and
                    t2.enddate > t.startdate and
                    t2.startdate < t.enddate and
                    -- and not the same record
                    t2.startdate <> t.startdate and
                    t2.enddate <> t.enddate
             );

像这样表达查询怎么样?

select t.*
from t join
     t t2
     on t2.transactionId = t.transactionId 
where t2.enddate > t.startdate and
      t2.startdate < t.enddate and
      t2.startdate <> t.startdate and
      t2.enddate <> t.enddate

(如果你有一个唯一的 id,那么最后两个条件可以用那个代替。)

如果有可能,您可能会想要select distinct


推荐阅读