Я пытаюсь перевести этот SQL-запрос в решение NHibernate:
SELECT MIN(TopTimes.StartTime)
FROM (SELECT TOP 100 StartTime FROM Pack ORDER BY StartTime DESC) AS TopTimes
Эффективно для последних X (в данном случае 100) запущенных пакетов. Я хочу знать, каков минимум StartTime
.Это не кажется сложным, но после двухчасового поиска в Google я не могу как-то обернуться вокруг него.
У меня есть такой подзапрос, как этот:
DetachedCriteria.For<Pack>()
.SetProjection(Projections.Property("StartTime"))
.SetMaxResults(100)
.AddOrder(Order.Desc("StartTime"));
Но я не уверенкак объединить это с Projections.Min
Обновление : Чтобы уточнить немного:
Пример: Пусть select StartTime from Pack
вернет следующий результат:
2011-08-05 09:05:04.000
2011-08-05 08:05:04.000
2011-08-05 06:05:04.000
2011-08-05 05:05:04.000
2011-08-05 07:05:04.000
Я хочу сохранить 2 самых последних времени запуска:
SELECT TOP 2 StartTime FROM Pack ORDER BY StartTime DESC
, что возвращает:
2011-08-05 09:05:04.000
2011-08-05 08:05:04.000
Тогда я беру минимум, равный 2011-08-05 08:05:04.000
и это то, что мне нужно.
Предлагаемое select top 2 StartTime from Pack order by StartTime ASC
вернет:
2011-08-05 05:05:04.000
2011-08-05 06:05:04.000
, а это не то, что мне нужно.