我有一个表名是ProductDirection。它包括这些列。
- 操作码
 - 消息代码
 - 产品编号
 - 消息信息
 - 状态码
 - 插入日期
 
我有一个批处理程序,这个程序最多可以工作。一个产品一天3次。如果一个产品批次操作成功,该产品当天批次不工作。所以程序会在成功和插入记录失败或成功时工作。
我的记录是:
ProductNo  StatusCode  MessagesInfo     InsertDate
---------------------------------------------------------   
1236895     0          Fail For xxx     01.01.2013 10:00:00
1236895     0          Fail For yyy     01.01.2013 15:00:00
1236895     1          Success          01.01.2013 19:00:00
1236895     0          Fail For xxx     15.01.2013 10:00:00
1236895     0          Fail For yyy     15.01.2013 15:00:00
1236895     0          Fail For zzz     15.01.2013 19:00:00
我想要这个条件。如果它有可用的成功记录,我只想在一天内获得此记录,如果所有记录在一天内都是失败的。所以我的记录会是这样的。
ProductNo  StatusCode MessagesInfo    InsertDate
------------------------------------------------------    
1236895     1         Success         01.01.2013 19:00:00 
1236895     0         Fail For xxx    15.01.2013 10:00:00
1236895     0         Fail For yyy    15.01.2013 15:00:00
1236895     0         Fail For zzz    15.01.2013 19:00:00
我该如何解决?
SELECT *
  FROM ProductDirection p
 WHERE p.operationcode = 6
   AND p.messagecode = 2
   AND trunc(p.insertdate) BETWEEN '01.01.2013' AND '21.06.2013';