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

标签 sql postgresql window-functions

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

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

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

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

最佳答案

您不需要 CASE 语句:

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

关于sql - 使用 postgresql 分区中的最后一个值填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956967/

相关文章:

SQL 查询按两个不同的列分组

mysql - (SQL) 如果某列包含特定字符串则更新该列

sql - 这个 bcp 实用程序有什么问题?

SQL Select 用于书籍格式

mysql - 通过分组依据和限制选择n个数据

sql - 我正在写一个 mysql 查询。帮帮我

sql - 将数据从 Excel 导入到 PostgreSQL

ruby-on-rails-3 - 如何管理 Rails 关联和数据库外键约束之间的差异?

mysql - 如何检测MySQL表窗口中是否包含特定值

sql - 按最大总和选择,但结果中没有总和