All'interno del mio programma, controllo i dati in arrivo, che possono essere di 4 tipi. Se i dati soddisfano tutti i criteri richiesti, vengono memorizzati con successo in una colonna della tabella, insieme al tipo di messaggio e al timestamp di quando la riga è stata inserita nella tabella.SQL - Restituisce una riga distinta per i dati con il valore di data/ora massimo creato
I dati possono anche essere scritti sulla tabella con errore, a causa di qualcosa come un problema di connessione che si verifica ecc. Con il controllo. Il programma riproverà il controllo di questi dati e se avrà esito positivo scriverà una nuova riga, con esito positivo. Quindi vedi che ora ho 2 righe per quel particolare messaggio di dati, uno con successo, uno con errori, entrambi con timestamp diversi. (Il successo ha il timestamp più recente del record di errore.)
Un terzo messaggio, rifiutato, si verifica e ha un record scritto se i dati in ingresso non soddisfano lo standard richiesto, di nuovo con un timestamp di creazione.
Quello che mi piacerebbe fare è scrivere una query Sybase SQL per recuperare solo il record per ogni messaggio ricevuto, con il timestamp più alto.
Quindi, con l'esempio di errore sopra riportato, non desidero restituire il record di errore, ma solo il record di successo corrispondente da quando il processo è stato riprovato ed è stato un successo.
avevo pensato a qualcosa di simile alla seguente ..
SELECT distinct(*)
FROM auditingTable
WHERE timestamp = (SELECT MAX(timestamp) from auditingTable)
se Im consapevoli questo porterà solo indietro 1 registro, con la più alta timestamp in tutto il tavolo.
Come posso recuperare il record più recente per ogni messaggio ricevuto, indipendentemente dal suo stato ??
Tutte le idee sono benvenute!