Во-первых, вам нужно определить, что делает строку «первой». Я составлю произвольное определение, и вы сможете изменить SQL так, как вам нужно. В этом примере я предполагаю, что «first» будет самым низким значением для MyField4, а если они равны, то самым низким значением для MyField5. Также учитывается возможность идентичности всех 5 столбцов.
SELECT DISTINCT
T1.MyField1,
T1.MyField2,
T1.MyField3,
T1.MyField4,
T1.MyField5
FROM
MyTable T1
LEFT OUTER JOIN MyTable T2 ON
T2.MyField1 = T1.MyField1 AND
T2.MyField2 = T1.MyField2 AND
T2.MyField3 = T1.MyField3 AND
(
T2.MyField4 > T1.MyField4 OR
(
T2.MyField4 = T1.MyField4 AND
T2.MyField5 > T1.MyField5
)
)
WHERE
T2.MyField1 IS NULL
Если вы также хотите учесть PK, которые не дублируются в исходной таблице, но уже существуют в вашей таблице назначения, вам придется учесть это тоже.