在同一张表中,有两个字段begin_date和end_date,有多条记录但时间是不一样的,我有两个条件1、要取所有begin_date不相同并且end_date也不同的一系列数据2、符合1条件的同时还要sysdate-begin_date是最小的那条数据,我要的sql语句就是符合1,2条件的要求。请注意是一张表,请高手帮忙写这个语句,万分感谢!BEGIN_DATE  END_DATE
----------- -----------
2009-6-3    2009-6-10
2009-6-7    2009-6-8
2009-6-3    2009-6-9
2009-6-4    2009-6-8
2009-6-9    2009-6-2
2009-6-7    2009-6-8
2009-6-7    2009-6-3
2009-6-2    2009-6-8
2009-6-6    2009-6-6
2009-6-4    2009-6-3
2009-6-1    2009-6-2
2009-6-3    2009-6-2
2009-6-4    2009-6-4
2009-6-8    2009-6-8
2009-6-2    2009-6-9
2009-6-7    2009-6-1
2009-6-9    2009-6-6
2009-6-1    2009-6-8
2009-6-9    2009-6-9
2009-6-6    2009-6-6

解决方案 »

  1.   

    select distinct(BEGIN_DATE,END_DATE) from A where BEGIN_DATE=max(BEGIN_DATE);
    BEGIN_DATE最大,sysdate-begin_date就最小
      

  2.   

    SELECT *
      FROM TAB T2
     WHERE T2.BEGIN_DATE = (SELECT MAX(T1.BEGIN_DATE)
                     FROM (SELECT T.BEGIN_DATE,
                                  T.END_DATE,
                                  ROW_NUMBER() OVER(PARTITION BY T.BEGIN_DATE, T.END_DATE ORDER BY T.BEGIN_DATE) RN
                             FROM TAB T) T1
                    WHERE T1.RN = 1)不过按你的需求好像结果应该不只一行哦