贝利信息

SQL 如何处理缺失数据并补齐时间轴?

日期:2026-01-19 00:00 / 作者:冷漠man
SQL补齐时间轴需两步:先生成完整时间序列,再左连接原始数据补NULL。PostgreSQL用generate_series,MySQL 8.0+用递归CTE,SQL Server用递归CTE或数字表。

SQL 处理缺失数据并补齐时间轴,核心是两步:先生成完整的时间序列(比如每天、每小时),再用左连接把原始数据“挂”上去,空缺位置自然为 NULL,后续可按需填充(如前向填充、默认值、插值等)。

生成连续时间轴

不同数据库语法略有差异,但思路一致:用递归 CTE(PostgreSQL/SQL Server)、generate_series(PostgreSQL)、或数字表 + DATE_ADD(MySQL)构造日期序列。

左连接原始数据补空行

将生成的时间轴与业务表 LEFT JOIN,确保每个时间点都有一行,缺失数据自动为 NULL。

填充缺失值(常见策略)

补出空行后,根据业务逻辑决定如何填 NULL:

注意事项

时间轴补齐本质是「维度对齐」,实际使用时要注意: