在同一张表中,有两个字段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
----------- -----------
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
BEGIN_DATE最大,sysdate-begin_date就最小
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)不过按你的需求好像结果应该不只一行哦