admin

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

sql

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

例如,如果我有以下内容…

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

任何帮助,将不胜感激。


阅读 161

收藏
2021-07-01

共1个答案

admin

您不需要以下CASE语句:

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