首页 > 解决方案 > 在 SQL 中检查数据序列

问题描述

我在列中有每周数据。我需要排除连续四个星期有空值的记录。

临时ID 第 1 周 第 2 周 第 3 周 第 4 周 第 5 周 第六周 第 7 周
123 1 无效的 无效的 无效的 无效的 4 4
234 3 5 5 6 无效的 4 4
333 4 无效的 4 8 无效的 4 4

对于这个例子,我需要排除 temp id 123。其余需要包括在内。基本上排除列中有四个连续空记录的记录。

我如何查看我在此处描述的顺序?

标签: sql

解决方案


您可以在where使用函数包装的条件中重复所有可能的序列coalescecoalesce返回第一个非空值,所以如果它返回空值,那么所有值都是空值。

select *
from yourtable
where coalesce(week1, week2, week3, week4) is null
  or coalesce(week2, week3, week4, week5) is null
  or coalesce(week3, week4, week5 week6) is null
  or coalesce(week4, week5 week6 week7) is null

推荐阅读