У меня есть следующий запрос:мин с более, без группы по: возвращает неожиданные результаты
SELECT ContractNr
, SequenceNr
, DurationBeginDate
, MIN(DurationBeginDate) OVER(PARTITION BY contractnr ORDER BY SEQUENCENR ASC) mindurdat
FROM AccountContract
WHERE ContractNr = 768
, который возвращает следующий результат:
ContractNr SequenceNr DurationBeginDate mindurdat
768 1 2008-03-08 00:00:00.0000000 2008-03-08 00:00:00.0000000
768 2 2008-06-08 00:00:00.0000000 2008-03-08 00:00:00.0000000
768 3 2008-09-08 00:00:00.0000000 2008-03-08 00:00:00.0000000
768 4 2008-12-08 00:00:00.0000000 2008-03-08 00:00:00.0000000
768 5 2007-06-08 00:00:00.0000000 2007-06-08 00:00:00.0000000
, который не то, что я ожидал, что я хочу для поля mindurdat
- DurationBeginDate
, соответствующий самому нижнему SequenceNr
. Другими словами, для всех этих записей это должно быть 2008-03-08 00:00:00.0000000
Я не понимаю, почему последняя запись в этом примере хранит оригинал DurationBeginDate
.
Я знаю, что могу получить правильный результат с подзапросом, но я хотел бы сохранить эффективность.
О, я вижу, это имеет смысл сейчас. благодаря – HoneyBadger