首页 > 解决方案 > 如何忽略表中行之间的前后值

问题描述

我有一张如下表

在此处输入图像描述

我必须在表中添加一个新列作为“value_”,它应该包含最后一个 TRUE 之间的行的年龄值,即行号 4(以绿色突出显示)值和最后一个记录(具有 01-01-9999)和剩余都应该是“零”

如下所示 在此处输入图像描述

如果所有值(除了最后一条记录为 01-01-9999)都是 FALSE,那么我们需要所有年龄值,如下所示 在此处输入图像描述

如何在sql中实现这一点?你能帮我解决这个问题吗

标签: sqlgoogle-bigquery

解决方案


如果我理解正确,这是一种方法:

SELECT * , CASE WHEN maxtrueflag IS NULL THEN age_
            CASE WHEN maxtrueflag IS NOT NULL AND from_>= maxtruefalg THEN age_ 
            ELSE 0 END AS value_
FROM (
    SELECT *, MAX(CASE WHEN flag = TRUE THEN from_ END) OVER() maxtrueflag
    FROM  tableName 
    ) t

推荐阅读