Snowflake SQL用PARTITION BY基于列最后非空值取相邻列值方案
解决方案
你可以直接使用Snowflake窗口函数LAG的IGNORE NULLS参数实现需求,无需嵌套子查询,单条SELECT语句即可完成:
SELECT * , LAG(CASE WHEN R = 'Y' THEN T END) IGNORE NULLS OVER (PARTITION BY ID ORDER BY T) AS GOAL FROM 你的表名;
逻辑说明:
- 先用
CASE WHEN R = 'Y' THEN T END构造临时计算值:只有R为Y的行返回对应T值,其余行返回NULL LAG(...) IGNORE NULLS会跳过所有NULL值,取当前行之前最近一个非空的T值PARTITION BY ID按ID分组处理,ORDER BY T保证按T的升序顺序匹配上一个有效值
内容的提问来源于stack exchange,提问作者user11453289
相关产品推荐
相关产品推荐

