Мне нужно знать, как я могу переписать следующий запрос SQL в формате ICibereria NHibernate. По сути, это способ имитировать функцию RANK () в MS-SQL и возвращать только те результаты, которые наиболее актуальны.
SELECT a.Name, a.Value, a.CreationDate
FROM MyTable a
WHERE EXISTS
(
SELECT NULL
FROM
(
SELECT TOP 1 CreationDate
FROM MyTable
WHERE Name = a.Name
ORDER BY CreationDate DESC
) b
WHERE b.CreationDate = a.CreationDate
)
Например, дана таблица со следующими данными:
ИМЯ, ЗНАЧЕНИЕ, CREATIONDATE
«Key One», «value one v1», «2009-11-11»
«Key One», «value one v2», «2009-11-12»
'Key Two', 'value two v1', '2009-11-09'
«Ключ три», «Значение три v2», «2009-09-09»
«Ключ три», «значение три v1», «2009-09-06»
«Ключ три», «Значение три v3», «2009-10-01»
Результатом вышеприведенного запроса будет:
'Key One', 'value one v2', '2009-11-12'
'Key Two', 'value two v1', '2009-11-09'
«Ключ три», «Значение три v3», «2009-10-01»