关于一条判断是否成功的SQL

雨山 发布于 2012/03/07 12:36
阅读 162
收藏 0

有个表 t

字段  日期Date 时间Time 人员Man 状态Status

日期               时间   人员   状态
2012-03-07  06:01:52   A    failed
2012-03-07  06:02:52   A    failed
2012-03-07  06:03:52   A    success
2012-03-07  06:04:52   B    success
2012-03-07  06:05:52   B    success
2012-03-07  06:06:52   C    success
2012-03-07  12:07:52   C    failed
2012-03-07  15:08:52   C    failed

想整个SQL,把每天的失败信息查出来,要求是以时间最后一次为准,失败则查出该人员的所有信息(包括成功与失败),如果最后一次是成功的,则不查询该人员的信息。

上面的数据,应当查出来的是 人员C 的 信息

试了很久,没想出应该怎么拼凑条件,特来请问.

加载中
0
c
cyc000

要看你数据库里面的数据量了,还有就是会不会出现在最后时间有不同用户

SELECT a.*
  FROM TEST a,
       (select *
          from (select * from test order by time desc)
         where rownum = 1) b
 where b.Status= 'failed'
   AND a.MAN = b.MAN   ----不考虑同一时间不同用户失败情况

SELECT a.*
  FROM TEST a,
       (select x.Status,x.man
          from test x, (select max(time) time from test) y
         where x.time = y.time and x.Status = 'failed') b
 where a.MAN in (b.MAN) ----考虑同一时间不同用户失败情况

0
雨山
雨山

好吧,我最后是这么整的...

select t.*  from test t
 where t.date= (select to_char(sysdate, 'yyyy/MM/dd') from dual)
   and t.man in (select t.man 
                         from test t
                        where t.man || t.time in
                              (select t.man || max(t.time)
                                 from test t
                                where t.date = (select to_char(sysdate, 'yyyy/MM/dd') from dual)
                                group by t.man)
                          and t.status = 'failed'
                        group by t.man)
  order by t.man, t.time

返回顶部
顶部