W ramach mojego programu audytuję dane przychodzące, które mogą mieć 4 typy. Jeśli dane spełniają wszystkie wymagane kryteria, zostanie zapisany z powodzeniem w kolumnie tabeli, wraz z typem wiadomości i znacznikiem czasu, kiedy wiersz został wprowadzony do tabeli.SQL - zwracanie różnych wierszy dla danych z wartością Max utworzonego znacznika czasu
Dane mogą być również zapisywane do tabeli z błędem, z powodu np. Problemu z połączeniem itp. Z audytem. Program spróbuje ponownie przeprowadzić inspekcję tych danych, a jeśli powiodą się, napisze nowy wiersz z powodzeniem. Więc widzisz, że mam teraz 2 wiersze dla tej konkretnej wiadomości danych, jedna ma sukces, a druga ma błąd, oba z różnymi znacznikami czasu. (Sukces ma najnowszy znacznik czasu niż rekord błędu.)
Trzecia wiadomość, odrzucona, występuje i ma zapisany rekord, jeśli przychodzące dane nie spełniają wymaganego standardu, ponownie z utworzeniem znacznika czasu.
Co chcę zrobić, to napisać zapytanie SQL Sybase, aby pobrać tylko rekord dla każdej odebranej wiadomości, z najwyższym znacznikiem czasu.
Tak więc z powyższym przykładem błędu, nie chcę zwrócić rekordu błędu, tylko odpowiadający mu rekord sukcesu, od momentu, w którym proces został powtórzony i zakończył się sukcesem.
myślałem o czymś takim następujące ..
SELECT distinct(*)
FROM auditingTable
WHERE timestamp = (SELECT MAX(timestamp) from auditingTable)
chociaż jestem świadomy to przyniesie z powrotem tylko 1 rekord, z najwyższym datownik w całej tabeli.
W jaki sposób mogę uzyskać najnowszy rekord każdej otrzymanej wiadomości, niezależnie od jej statusu?
Wszelkie pomysły mile widziane!