私のプログラムでは、受信データを監査します。受信データには 4 つのタイプがあります。データが必要なすべての基準を満たしている場合、メッセージの種類と行がテーブルに入力されたときのタイムスタンプと共に、テーブルの列に正常に格納されます。
監査で接続の問題が発生するなどの理由で、データがエラーでテーブルに書き込まれることもあります。プログラムはこのデータの監査を再試行し、成功した場合は新しい行を書き込みます。ご覧のように、データの特定のメッセージに対して 2 つの行があり、1 つは成功、もう 1 つはエラーで、両方ともタイム スタンプが異なります。(エラーレコードよりも最新のタイムスタンプを持つ成功。)
拒否された 3 番目のメッセージが発生し、着信データが必要な基準を満たしていない場合はレコードが書き込まれ、ここでもタイムスタンプが作成されます。
私がやりたいのは、Sybase SQL クエリを記述して、受信した各メッセージのレコードのみを取得し、タイムスタンプが最も高いものにすることです。
したがって、上記のエラーの例では、エラー レコードを返すのではなく、プロセスが再試行されて成功したときの対応する成功レコードのみを返します。
次のようなことを考えていました..
SELECT distinct(*)
FROM auditingTable
WHERE timestamp = (SELECT MAX(timestamp) from auditingTable)
ただし、これにより、テーブル全体で最も高いタイムスタンプを持つ1つのレコードのみが返されることは承知しています。
ステータスに関係なく、受信した各メッセージの最新のレコードを取得するにはどうすればよいですか??
どんなアイデアでも大歓迎です!