用postgresql中分区的最后一个值填充列

fill column with last value from partition in postgresql

我正在尝试 return 分区的最后一个值并将其应用于列的其余部分

例如,如果我有以下...

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

我要return这个

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

如有任何帮助,我们将不胜感激。

您不需要 CASE 声明:

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