【发布时间】:2019-05-06 19:08:42
【问题描述】:
这与selecting row with latest timestamp question 不同,并且特定于 Redshift
我希望允许用户在不同时间点更新(暂存)表行的部分内容同时避免调用 UPDATE 语句。这是通过仅追加方法完成的,在这种方法中,我们不断添加行,其中只有唯一 id 和时间戳是强制性的,其他列可能提供也可能不提供值。
问题:
给定一个表,其中除了“主键”(未真正强制执行)和时间戳列之外,该表中的所有其他列都是 可为空,我如何合并具有相同主键的所有行如果存在一个这样的非空值,通过为每个可为空的列选择最近的非空值来键入一行。
例子:
|id|timestamp|status|stringcol|numcol|
|1 |456 |begin | | |
|1 |460 | | | 2 |
|2 |523 | | foo | |
|1 |599 |mid | blah | |
|2 |624 |begin | | |
|1 |721 |done | | 60 |
应该产生
|id|timestamp|status|stringcol|numcol|
|2 |624 |begin | foo | |
|1 |721 |done | blah | 60 |
【问题讨论】:
-
PostgreSQL 中有一个
DISTINCT ON功能可以做到这一点!但是,它在 Amazon Redshift 中不可用。这是声称模仿这种行为的东西:DISTINCT ON like functionality for Redshift
标签: amazon-redshift