You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用同列中最近的非空值更新SQL临时表内的Null值?

解决方案:用最近非空值填充Null

针对你的临时表#ORDERS,我们需要按WAREHOUSE和CATEGORY_NUMBER分组,在每个分组内按YEARMONTH排序,用**历史最近的非空VALUE**来填充Null值。以下是两种适用于SQL Server的实现方式(你的临时表语法是SQL Server风格):

方法1:使用LAST_VALUE(SQL Server 2022+)

SQL Server 2022及以后版本支持IGNORE NULLS参数,这让我们可以直接用窗口函数快速定位最近非空值:

WITH FilledValues AS (
    SELECT 
        YEARMONTH,
        WAREHOUSE,
        CATEGORY_NUMBER,
        VALUE,
        LAST_VALUE(VALUE) IGNORE NULLS OVER (
            PARTITION BY WAREHOUSE, CATEGORY_NUMBER 
            ORDER BY YEARMONTH 
            ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        ) AS LatestNonNullValue
    FROM #ORDERS
)
UPDATE FilledValues
SET VALUE = LatestNonNullValue
WHERE VALUE IS NULL;

关键说明:

  • PARTITION BY WAREHOUSE, CATEGORY_NUMBER:确保我们只在同一个仓库+分类的范围内查找最近值,不会跨分组干扰
  • ORDER BY YEARMONTH:按时间顺序排序,保证取的是当前行之前最近的非空值
  • IGNORE NULLS:跳过中间的Null记录,直接定位到有效的非空值

方法2:兼容旧版本SQL Server(2019及以下)

如果你的SQL Server版本不支持IGNORE NULLS,可以用自连接+ROW_NUMBER()来实现:

WITH RankedNonNulls AS (
    SELECT 
        o1.YEARMONTH,
        o1.WAREHOUSE,
        o1.CATEGORY_NUMBER,
        o1.VALUE,
        o2.VALUE AS LatestNonNullValue,
        ROW_NUMBER() OVER (
            PARTITION BY o1.WAREHOUSE, o1.CATEGORY_NUMBER, o1.YEARMONTH 
            ORDER BY o2.YEARMONTH DESC
        ) AS rn
    FROM #ORDERS o1
    LEFT JOIN #ORDERS o2 
        ON o1.WAREHOUSE = o2.WAREHOUSE 
        AND o1.CATEGORY_NUMBER = o2.CATEGORY_NUMBER 
        AND o2.YEARMONTH <= o1.YEARMONTH 
        AND o2.VALUE IS NOT NULL
    WHERE o1.VALUE IS NULL
)
UPDATE RankedNonNulls
SET VALUE = LatestNonNullValue
WHERE rn = 1;

关键说明:

  • 自连接表,找到每个Null行时间之前的所有非空值记录
  • ROW_NUMBER()按时间倒序排序,取距离当前行最近的那一条(rn=1)
  • 仅更新原本为Null的行,避免覆盖已有有效值

验证结果

执行完更新后,用以下查询确认效果:

SELECT * FROM #ORDERS ORDER BY WAREHOUSE, CATEGORY_NUMBER, YEARMONTH;

针对你提供的样本数据,ABC仓库1001分类的Null值会被填充为:

  • 201712 → 84(来自201711的非空值)
  • 201802 → 82(来自201801的非空值)
  • 201803 → 82(来自201801的非空值)

内容的提问来源于stack exchange,提问作者Json Brent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:04:30