It seems to me that both of those lines should have the same result, but they don't. The First_Value with Descending argument returns what I want, but the Last_Value with Ascending simply returns the value for MonthEndDate per record.

quote:If ORDER BY is not specified entire partition is used for a window frame. This applies only to functions that do not require ORDER BY clause. If ROWS/RANGE is not specified but ORDER BY is specified, RANGE UNBOUNDED PRECEDING AND CURRENT ROW is used as default for window frame. This applies only to functions that have can accept optional ROWS/RANGE specification. For example, ranking functions cannot accept ROWS/RANGE, therefore this window frame is not applied even though ORDER BY is present and ROWS/RANGE is not.

If you add this to your OVER clause you'll get the results you expected:ROWS between unbounded preceding and unbounded following