オンライン決済ゲートウェイシステムで問題が発生し、トランザクションエントリが互いに数分以内に重複することがあります。
これらのトランザクションの記録を作成して、分析および修正できるようにします。
次のような単一のテーブル。これは、1つのカード番号のみの結果を示しています。同じ日に発生したトランザクションのみを返し、できれば最後の2行と同様に互いに5秒以内に返すことをお勧めします。
txn_authcode card_number cardtype txn_status txn_value entryTimeStamp
-------------------------------------------------------------------------------
1491109220 ....0279 Visa FAILED 20.00 2011-06-24 19:49:00
1491109219 ....0279 Visa FAILED 20.00 2012-05-28 22:47:57
1491109218 ....0279 Visa FAILED 20.00 2012-05-28 22:46:39
1491109217 ....0279 Visa FAILED 20.00 2012-05-28 22:46:35
これまでのところ、特定のカード番号の重複レコードを取得する次のものがありますが、同じ日に、できれば互いに5秒以内にレコードを取得するために、これをさらに細かくする方法がわかりません。
select * from(
select t1.txn_authcode,t1.txn_status,t1.txn_value,t1.entryTimeStamp
from transactions t1
where 1=1
and exists
(select null
from transactions t2
where t1.card_number = t2.card_number
and t1.entryTimeStamp <> t2.entryTimeStamp
and t2.entryTimeStamp >= '2012-05-01'
and t2.entryTimeStamp <= '2012-06-01'
--*** AND DATEDIFF ( day , t1.entryTimeStamp , t2.entryTimeStamp ) < 1
--(datediff above doesn't work as it can return a single record for a given card,
--but we only want records that have at least one other transaction record on the same
--day for the same card)
)
and t1.entryTimeStamp >= '2012-05-01'
and t1.entryTimeStamp <= '2012-06-01'
)x
order by card_number,entryTimeStamp desc
誰かがこれを手に入れてくれませんか?