何百万ものトランザクションを含むテーブルがあります。現在支払われている最高額を見つける必要があります。「現在」は、最後にキャンセルされたトランザクションの後に発生するものとして定義されます。表は次のとおりです。
Id (guid) ServiceId CreatedDate AmountPaid InsurerId IsCanceled
76E9A3... 19 2013-08-30 12:34:01.580 56.00 96 0
C3F325... 19 2013-08-30 12:34:02.069 14.95 110 0
96E9A3... 19 2013-08-30 12:32:01.540 109.00 95 1
C3BC25... 19 2013-08-30 12:32:02.007 15.95 108 1
85E9A3... 19 2013-08-30 12:30:01.701 101.00 95 0
A3F325... 19 2013-08-30 12:30:02.069 13.95 108 0
ご覧のとおり、同じサービス ID に対して複数のトランザクションがあります。ここで取得する必要があるのは $56 のトランザクションです。これは、同じ ServiceID のトランザクションが最後にキャンセルされた後、その ServiceId の最高額であるためです。
私が行った場合:
ORDER BY CreatedDate DESC, AmountPaid DESC
最初の行は 14.95$ のトランザクションになります...
私が行った場合:
ORDER BY AmountPaid DESC, CreatedDate DESC
最初の行は 101$ の取引です
より詳しい情報:
サービス取引がキャンセルされると、すべての取引が無効になります。有効なトランザクションは、キャンセルされたトランザクションの後に作成されたトランザクションのみです。