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

SQL Server对多列求行平均值时如何自动跳过NULL空值

SQL Server 行级多列跳过NULL计算平均值方案

适用所有SQL Server版本的通用写法

直接通过更新语句填充I列,自动跳过NULL值计算有效值平均:

UPDATE 你的实际表名
SET I = (
    -- 计算所有非NULL值的总和
    ISNULL(C, 0) + ISNULL(D, 0) + ISNULL(E, 0) + ISNULL(F, 0) + ISNULL(G, 0) + ISNULL(H, 0)
) / NULLIF(
    -- 统计非NULL值的数量,全为NULL时返回NULL避免除以0报错
    CASE WHEN C IS NOT NULL THEN 1 ELSE 0 END
    + CASE WHEN D IS NOT NULL THEN 1 ELSE 0 END
    + CASE WHEN E IS NOT NULL THEN 1 ELSE 0 END
    + CASE WHEN F IS NOT NULL THEN 1 ELSE 0 END
    + CASE WHEN G IS NOT NULL THEN 1 ELSE 0 END
    + CASE WHEN H IS NOT NULL THEN 1 ELSE 0 END
, 0)

逻辑说明:

  • 你提到的阿尔巴尼亚对应行C、D、E、F均为NULL时,分母统计结果为2(仅G、H非NULL),分子为G+H的和,计算结果就是两列的平均值,符合需求
  • 若C到H列全为NULL,运算结果会自动返回NULL,不会触发除以0报错

SQL Server 2022+ 简化写法

高版本可通过行构造器+原生AVG函数实现,写法更简洁,原生AVG天然忽略NULL:

UPDATE 你的实际表名
SET I = (
    SELECT AVG(col) 
    FROM (VALUES(C),(D),(E),(F),(G),(H)) AS v(col)
)

使用时将代码中的你的实际表名替换为你业务中对应的表名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:48:00