Владимир, на самом деле ваш запрос и мой - это одно и тоже, только у вас было дополнительное условие на recId, которое по смыслу является лишним, т.к. оно никогда не будет равно из-за условия
X++:
&& myTable2.TransDate > myTable.TransDate
Именно это я имел ввиду, когда написал "Помойму в данном случае вы перемудрили с recid."
А вот "Ваш вапрос не вернёт нужные данные, если за нужную дату окажется несколько строк.." было лишним, это уже я ошибся, т.к. думал уже о том, что буду писать дальше.
А дальше следующее: насчёт "!=" и ">":
Исходный запрос возвращает именно все строки с максимальной датой, т.е. несколько, если бы их было несколько в таблице. (вопрос о том какие данные в таблице мы не рассматриваем)
А вот если бы нужно было только одно из них, то тогда и надо было бы использовать проверку рекID и именно с ">" или "<", т.к. иначе запрос не вернул бы данных.
т.е. если бы условие было
X++:
&& myTable2.TransDate >= myTable.TransDate
Вот это не вернёт ничего (тут надо < или >):
X++:
Select T1.Transdate, T1.Key, T1.Value
From Mytable T1
Where T1.Transdate <= getDate()
And Not Exists (
Select Null
From Mytable T2
Where T2.Recid != T1.Recid
And T2.Key = T1.Key
And T2.Transdate >= T1.Transdate
And T2.Transdate <= getDate())
но к исходному вопросу эта вторая часть уже отношения не имеет.

)