在同一张表中,有两个字段begin_date和end_date,有多条记录但时间是不一样的,我有两个条件1、要取所有begin_date相同而end_date不同的一系列数据2、符合1条件的同时还要end_date-begin_date是最小的那条数据
我要的sql语句就是符合1,2条件的要求。请注意是一张表,请高手帮忙写这个语句,万分感谢!
我要的sql语句就是符合1,2条件的要求。请注意是一张表,请高手帮忙写这个语句,万分感谢!
这个sql语句有点漏洞,没有排除掉单条begin_date的记录,而且也没有取得表的数据记录。
---A表结果如下-------------------------------------------------------
1 111 11111111 2008-01-02 2009-06-13 16:47:21 2009-06-13 16:48:21
2 112 11111111 2008-09-22 2009-06-13 16:47:21 2009-06-13 16:49:21
3 113 11111111 2008-04-11 2009-06-13 16:47:21 2009-06-13 16:50:21
4 114 22222222 2009-01-02 2009-06-13 16:46:21 2009-06-13 16:51:21
5 115 22222222 2009-03-02 2009-06-13 16:46:21 2009-06-13 16:52:21
6 116 33333333 2008-02-02 2009-06-13 16:45:21 2009-06-13 16:53:21 /*写出楼主需要的sql语句,可能不一定是效率最高的,但是实现了楼主的要求*/
select a2.* from
(
select begin_date,min(end_date-begin_date) minva, count(*) rn from A group by A.Begin_Date
)a1 inner join A a2
on a1.begin_date=a2.begin_date and a1.minva=(a2.end_date-a2.begin_date) and a1.rn>1--执行结果如下:------------------------------------------------------
1 111 11111111 2008-01-02 2009-06-13 16:47:21 2009-06-13 16:48:21
2 114 22222222 2009-01-02 2009-06-13 16:46:21 2009-06-13 16:51:21
---A表结果如下--------------------------------------------------------------------------------
1 111 11111111 2008-01-02 2009-06-13 16:47:21 2009-06-13 16:48:21
2 112 11111111 2008-09-22 2009-06-13 16:47:21 2009-06-13 16:49:21
3 113 11111111 2008-04-11 2009-06-13 16:47:21 2009-06-13 16:50:21
4 114 22222222 2009-01-02 2009-06-13 16:46:21 2009-06-13 16:51:21
5 115 22222222 2009-03-02 2009-06-13 16:46:21 2009-06-13 16:52:21
6 116 33333333 2008-02-02 2009-06-13 16:45:21 2009-06-13 16:53:21 /*写出楼主需要的sql语句,可能不一定是效率最高的,但是实现了楼主的要求*/
select a2.* from
(
select begin_date,min(end_date-begin_date) minva, count(*) rn from A group by A.Begin_Date
)a1 inner join A a2
on a1.begin_date=a2.begin_date and a1.minva=(a2.end_date-a2.begin_date) and a1.rn>1--执行结果如下:-----------------------------------------------------------------------------------
1 111 11111111 2008-01-02 2009-06-13 16:47:21 2009-06-13 16:48:21
2 114 22222222 2009-01-02 2009-06-13 16:46:21 2009-06-13 16:51:21