我有一个表名是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';