sql - 如何忽略表中行之间的前后值
问题描述
我有一张如下表
我必须在表中添加一个新列作为“value_”,它应该包含最后一个 TRUE 之间的行的年龄值,即行号 4(以绿色突出显示)值和最后一个记录(具有 01-01-9999)和剩余都应该是“零”
如果所有值(除了最后一条记录为 01-01-9999)都是 FALSE,那么我们需要所有年龄值,如下所示
如何在sql中实现这一点?你能帮我解决这个问题吗
解决方案
如果我理解正确,这是一种方法:
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
推荐阅读
- spring-boot - 同一应用程序无法通过 docker compose 发送 http 请求
- c# - Kotlin 在 C# 中“应用”等价物
- python - discord.py emoji 所有服务器机器人
- javascript - HTML、CSS 和 Js 用于将 img 大小限制为一个框,切断外部的任何内容
- c - C 中的#define 是准确地放置事物还是在前后给出空格?
- java - 如何将字符串子字符串复制到 StringBuilder
- r - 单独的正则表达式混淆
- javascript - 如何按对象属性值对对象数组进行分组?
- c++ - QSqlTablelModel 找不到 SQL 视图,但 QSqlQuery 可以
- graylog - 使用正则表达式来保存带有 HTTP 响应 4** 和 5** 的访问日志