2015-03-10 2 views
1

Я пытаюсь вернуть последнее значение раздела и применить его к остальной части колоннызаполнить столбец с последним значением из раздела в PostgreSQL

Например, если у меня есть ниже ...

ID Date  Status 
1  20150101 
1  20150201 
1  20150301 
1  20150401 void 
2  20150101 
2  20150201 
2  20150301 

Я хочу вернуть это.

ID Date  Status 
1  20150101 void 
1  20150201 void 
1  20150301 void 
1  20150401 void 
2  20150101 
2  20150201 
2  20150301 

Я играл с нижеследующим и аналогичным безрезультатным.

select 
ID, 
date, 
case when status is null then last_value(status ignore nulls) 
over (partition by id order by id, date) else status end as status 
from table 

Любая помощь будет оценена по достоинству.

ответ

0

Вам не нужно CASE заявление:

SELECT id, date, last_value(status) OVER (PARTITION BY id ORDER BY date) AS stat 
FROM table;