使用分区依据从 Snowflake (SQL) 中特定列的最后一个非空值查找相邻列值

Finding adjacent column values from the last non-null value of a certain column in Snowflake (SQL) using partition by

假设我有以下 table:

ID T R
1 2
1 3 Y
1 4
1 5
1 6 Y
1 7

我想添加一个列,该列等于基于列 R 的最后一个非空值的列 T 的值。这意味着:

ID T R GOAL
1 2
1 3 Y
1 4 Y 3
1 5 4
1 6 Y 4
1 7 6

我确实有很多 ID,所以我需要使用 OVER (PARTITION BY ...) 子句。另外,如果可能的话,我想使用一条语句,比如

SELECT *
,      GOAL
FROM TABLE

所以没有任何额外的 select 语句。

T是升序排列的,所以按照R取null,往后看取最大值。

select *,
    max(case when R is not null then T end)
      over (
        partition by id
        order by T
        rows between unbounded preceding and 1 preceding
    ) as GOAL
from TBL

http://sqlfiddle.com/#!18/c927a5/5