SQL根据错误的相关性过滤掉数据

时间:2016-05-27 20:12:57

标签: sql oracle

我有这个问题:

SELECT   phone,
             effdate,
             enddate
    FROM     my_table table1
    WHERE    EXISTS (SELECT *
                     FROM   my_table table2
                     WHERE  table1.phone = table2.phone
                       AND  table1.effdate = table2.effdate
                       AND  table1.enddate <> table2.enddate)
    ORDER BY phone,
             effdate,
             enddate

给了我这个数据:

  Phone        Effdate           End_date
2017937950    10/31/2010       6/30/2011 23:59
2017937950    10/31/2010       4/8/2014 23:59
4054631308    5/9/2008         7/14/2009 23:59
4054631308    5/9/2008         12/31/2099

这没关系,但是当我用手机在桌子上检查时,它们是这样的:

  Phone          Effdate      End_date
2017937950      10/31/2010    6/30/2011 23:59
2017937950      10/31/2010    4/8/2014 23:59
2017937950      5/28/2014     12/31/2099
4054631308      6/15/2005     2/25/2008 23:59
4054631308      5/9/2008      7/14/2009 23:59
4054631308      5/9/2008      12/31/2099

但是根据这些数据我只需要这种电话,因为Effdate和End_date的关联不正确7/14/2009 end_date和5/9/2008 effdate

   Phone        Effdate       End_date
 4054631308     5/9/2008      7/14/2009 23:59
 4054631308     5/9/2008      12/31/2099

因为像2017937950这样的电话号码有eff_date而end_date是对的。

    Phone       Effdate       End_date
 2017937950     10/31/2010    4/8/2014 23:59
 2017937950     5/28/2014     12/31/2099

如果你看到这一点,它看起来Effdate和End_date的相关性是正确的4/8/2014 end_date和5/28/2014 Effdate。

我正在使用上面的大查询来过滤掉Phone和Effdate相同而且End_date不同时将数据提供给BUT现在我不知道如何过滤掉那些最相关是正确的eff_date和end_date。 在此先感谢您的帮助。

0 个答案:

没有答案
相关问题