如果它包含在oracle中的另一个元组中,则隐藏冗余元组

时间:2013-02-19 21:10:01

标签: sql oracle

我有个人假期表,比如'M109'。 在特定日期,他休假1小时午餐和4小时会议。

例如

  • 上午11点至下午3点 - 会议
  • 中午12点到下午1点 - 午餐。

现在我需要隐藏这个1小时的午餐元组,只获得会议元组。 我怎么能这样做?

table(Person(varchar), StartTime, EndTime, Date, Desciption)是架构。

到目前为止我的查询:

select "Provider", sum(b."EndTime" - b."StartTime")/60 as Non
from VACATION b
where b."StartDate" = '18-FEB-13'
and b."StartTime" IN (select p."StartTime"
                      from axium.VACATION p
                      where Exists (select q."StartTime"
                                    from axium.VACATION q
                                    where p."Provider" = q."Provider"
                                    and q."StartTime" <> p."StartTime"
                                    and q."StartTime" between p."StartTime"
                                                      and p."EndTime"
                                   )
                     )
and b."Provider" = 'M1009'
group by b."Provider"
order by b."Provider";

1 个答案:

答案 0 :(得分:0)

您可以使用where子句和相关子查询执行此操作:

select *
from t
where not exists (select 1 from t t2 where t2.person = t.person and t2.starttime < t.starttime and t2.endtime > t.endtime)