Consulta para devolver 1 instancia de un logging con duplicates

INFORMACIÓN: estoy trabajando con Microsoft SQL.
Ok, el título es confuso pero aquí hay un ejemplo de la tabla con la que estoy trabajando:

ID Value Signal Read Firmware Date Time 5 123 656 444 217 3/30/2009 11:00:00 AM 5 123 421 333 217 3/30/2009 04:00:00 PM 5 123 111 666 217 3/30/2009 05:00:00 PM 9 321 231 551 216 3/30/2009 09:00:00 AM 9 321 599 887 216 3/30/2009 09:30:00 AM 

Entonces quiero que la consulta regrese:

 ID Value Signal Read Firmware Date Time 5 123 111 666 217 3/30/2009 05:00:00 PM 9 321 599 887 216 3/30/2009 09:30:00 AM 

Yo he tratado:

 SELECT DISTINCT ID, Value, Signal, Read, Firmware, Date, Time FROM .... 

Pero esto devuelve todos los resultados. También probé SELECT TOP 1 … pero no pude hacer que funcionara. Sé que esto es simple, pero estoy confundido sobre cómo lograr que esto muestre solo una única fila única.
Gracias por la ayuda.

¿Has probado esto?

 SELECT id, value, MIN(Signal), MIN(Read), MIN(Firmware), MIN(Date), MIN(Time) FROM ... GROUP BY ID, Value 

Los loggings son distintos, existen diferentes valores de Signal , Read y Time . ¿Cómo espera que el server SQL adivine cuál le gustaría?

Su ejemplo sugiere que está interesado en el logging más reciente de un Id determinado. Si eso es cierto, esta consulta debería funcionar para usted:

 SELECT table.* FROM table JOIN (SELECT Id, Date, MIN(Time) FROM Table GROUP BY Id, Date) AS selector ON (table.Id = selector.Id AND table.Date = selector.Date and table.Time = selector.Time) 
 SELECT ID, Value, Signal, Read, Firmware, Date, Time FROM ... GROUP BY ID, Value 
 SELECT Id, Value, Signal, Read, Firmware, Date, Time FROM table_name t1 WHERE t1.Id = (SELECT DISTINCT t2.Id FROM table_name t2) 

Suponiendo que haya un cheque para que los loggings con el mismo Id también tengan el mismo Valor

usa TOP 1 CON LAZOS

Consulta similar (utiliza CROSS APPLY y subconsulta correlacionada con TOP WITH TIES):

 SELECT a.CustodianAccountNum, a.AccountName, a.AccountName2, a.AccountName3, a.AccountStartDate, a.AccountClosedDate, a.TaxableFederal, a.TaxableState, qq.ValuationDate, qq.MarketValue, cg.ClientGroupGUID as ClientGUID, c.ClientGUID as EntityGUID, convert (bit, case when b.cnt > 1 then 1 else 0 end) as IsDuplicate FROM ( SELECT a.CustodianAccountNum, MIN(a.AccountID) as AccountID, count(*) as cnt FROM Accounts a WHERE a.AccountID in (SELECT AccountID from dbo.FnGetFiltenetworkingAccountIDs(@CurrentUserID)) -- apply permisssions and a.DeletedDate is null group by a.CustodianAccountNum ) b INNER JOIN Accounts a ON a.AccountID = b.AccountID INNER JOIN ClientAccounts ca ON a.AccountID = ca.AccountID and ca.DeletedDate is null INNER JOIN Clients c ON ca.ClientID = c.ClientID and c.DeletedDate is null INNER JOIN ClientGroups cg ON c.ClientGroupID = cg.ClientGroupID and cg.DeletedDate is null CROSS APPLY ( SELECT SUM(MarketValue) as MarketValue, MIN(ValuationDate) as ValuationDate FROM (SELECT TOP 1 WITH TIES arv.MarketValue, arv.ValuationDate FROM AccountReturnValues arv where arv.AccountId = a.AccountId and a.AccountClosedDate is null order by ValuationDate desc ) q ) qq