У меня есть таблица базы данных SQL, «Helium_Test_Data», в которой есть несколько записей на основе столбца KeyID (KeyID представляет одну протестированную деталь). Мне нужно запросить записи и показать только одну запись на KeyID (часть) на основе самой ранней даты-времени создания (пример формата: 2018-12-29 08: 22: 11.123). Это потому, что одна и та же часть была протестирована несколько раз, но мне нужно использовать первое чтение. Вот запрос, в настоящее время пробовал:
SELECT mt.*
FROM Helium_Test_Data mt
INNER JOIN
(
SELECT
KeyID,
MIN(DateTime) AS DateTime
FROM Helium_Test_Data
WHERE PSNo='11166565'
GROUP BY KeyID
) t ON mt.KeyID = t.KeyID AND mt.DateTime = t.DateTime
WHERE PSNo='11167197'
AND (mt.DateTime > '2018-12-29 07:00')
AND (mt.DateTime < '2018-12-29 18:00') AND OK=1
ORDER BY KeyId,DateTime
Возвращает только те строки, в которых нет дубликатов KeyID, присутствующих в таблице, в то время как мне нужна одна строка на каждый KeyID (дубликат или нет). А для дубликатов мне нужна самая ранняя дата.
Заранее спасибо за помощь.