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

MS SQL Server替换同项目同日期NULL注释的查询脚本需求

解决MS SQL Server中替换NULL注释的需求

针对你需要替换Table1中NULL注释的需求,以下是两种可重复执行的脚本方案,仅处理Date >= '2023-02-01'的数据,且严格按照同项目、同日期匹配有效注释:

方案1:关联子查询更新

UPDATE t
SET Comment = (
    SELECT MAX(Comment)
    FROM Table1 t2
    WHERE t2.Project = t.Project
      AND t2.Date = t.Date
      AND t2.Comment IS NOT NULL
)
FROM Table1 t
WHERE t.Comment IS NULL
  AND t.Date >= '2023-02-01';

说明

  • 子查询通过Project和Date分组,用MAX(Comment)获取同组内的有效非NULL注释(若同组存在多个非NULL注释,会取字典序最大的,需确保同组有效注释一致)
  • WHERE t.Comment IS NULL确保仅更新未填充的行,重复执行不会修改已填充的数据

方案2:CTE+窗口函数更新(更高效)

WITH CommentGroup AS (
    SELECT
        Comment,
        -- 按Project和Date分组,获取组内的有效注释
        MAX(Comment) OVER (PARTITION BY Project, Date) AS ValidComment
    FROM Table1
    WHERE Date >= '2023-02-01'
)
UPDATE CommentGroup
SET Comment = ValidComment
WHERE Comment IS NULL;

说明

  • 用CTE结合窗口函数MAX() OVER (PARTITION BY ...)提前计算每行对应的有效注释
  • 后续仅更新Comment为NULL的行,逻辑清晰且性能更优,适合大数据量场景

注意事项

  • 若Date字段是字符串类型,需确保'2023-02-01'的格式与表中存储的格式完全一致;建议将Date字段改为DATE或DATETIME类型以避免格式问题
  • 需保证同一Project+Date分组下的非NULL注释内容一致,否则MAX()会返回字典序最大的注释,需提前校验数据一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:42:55