有一个通知,通知编号为:20090630091102794,它的通知时间是:9:14:00
求下面记录中已经超过15分钟回复的地市编号及回复时间,即查出该通知超时回复的地市及回复时间REPLYDATE:为回复时间
AREAID:回复地市条件:超过15分钟未回复,则为超时回复.
注意:有的地市会回复多条,但是如果第一条回复如果不超时则该地市即未超时回复地市.
下面的这些记录为回复记录:
    REPLYDATE          AREAID
1 2009-6-30 9:21:18 10
2 2009-6-30 9:21:07 11
3 2009-6-30 9:18:22 12
4 2009-6-30 9:19:55 13
5 2009-6-30 9:20:25 14
6 2009-6-30 9:41:12 14
7 2009-6-30 9:22:15 15
8 2009-6-30 9:40:24 16
9 2009-6-30 9:41:38 16
10 2009-6-30 9:22:36 17
11 2009-6-30 9:19:12 18
12 2009-6-30 10:51:54 2
13 2009-6-30 17:07:31 21
14 2009-6-30 9:18:38 22
15 2009-6-30 9:18:53 3
16 2009-6-30 9:23:47 4
17 2009-6-30 9:26:57 4
18 2009-6-30 9:19:12 5
19 2009-6-30 9:31:31 5
20 2009-6-30 9:21:21 6
21 2009-6-30 9:34:03 6
22 2009-6-30 9:18:50 7
23 2009-6-30 9:20:50 9

解决方案 »

  1.   


    WITH TT AS
    (SELECT ROW_NUMBER() OVER(PARTITION BY A.AREAID ORDER BY A.REPLYDATE) RN ,A.* FROM YOURTABLE)
    select REPLYDATE,AREAID  from TT
    where (TO_DATE('2009-6-30 9:14:00','YYYY-MM-DD HH24:MI:SS')+INTERVAL '15' MINUTE<TT.REPLYDATE) AND TT.RN=1
      

  2.   

    select min(REPLYDATE),AREAID
    from mytab a
    where not exist
    (select 1 
    from mytab 
    where AREAID=a.AREAID 
    and REPLYDATE<=TO_DATE('2009-6-30 9:14:00','YYYY-MM-DD HH24:MI:SS')+15/1440)
    group by AREAID
      

  3.   

    三楼的执行代码有误,出现00936,missing expression
      

  4.   

    就是select 1处出现这个错误提示.
    我用plsql
      

  5.   

    你改成select * 试下
      

  6.   

    select min(REPLYDATE),AREAID
    from mytab a
    where not exist
    (select 1 
    from mytab 
    where AREAID=a.AREAID 
    and REPLYDATE<=TO_DATE('2009-6-30 9:14:00','YYYY-MM-DD HH24:MI:SS')+15/1440)
    group by AREAIDexist=>exists掉了个s
      

  7.   


    没有实际意义,可以看看exists not exists的用法。
      

  8.   

    select 1与 select *是一样的