LAST_VALUE()
- это оконная функция, а не функция агрегирования. Вы можете делать то, что хотите:
SELECT DISTINCT MAX(o.ObsDtm) OVER () AS Max_ObsDtm,
MIN(o.ObsDtm) OVER () AS Min_ObsDtm,
COUNT(DISTINCT o.ObsDtm) OVER () AS Count_ObsDtm,
LAST_VALUE(o.ObsValue) OVER (ORDER BY o.ObsDtm ASC) AS Max_ObsValue
FROM SCAObservation o;
Однако это не будет делать то, что вы действительно хотите. Я подозреваю, что вам нужна условная агрегация:
SELECT MAX(o.ObsDtm AS Max_ObsDtm,
MIN(o.ObsDtm)AS Min_ObsDtm,
COUNT(DISTINCT o.ObsDtm) AS Count_ObsDtm,
MAX(CASE WHEN seqnum = 1 THEN o.ObsValue END) AS Max_ObsValue
FROM (SELECT o.*, ROW_NUMBER() OVER (ORDER BY o.ObsDtm) as seqnum
FROM SCAObservation o
) o;