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

SQL Server查询如何避免重复月份行 优先选带sum1/sum2/sum3值的行

SQL Server 重复月份行筛选解决方案

核心逻辑通过窗口函数给同月份行按规则分配优先级,取每个月优先级最高的行即可,实现代码如下:

WITH month_ranked AS (
    SELECT
        *,
        ROW_NUMBER() OVER (
            -- 按月份分组,跨多年数据需额外加上年份字段分组
            PARTITION BY [你的月份字段名]
            ORDER BY
                -- 只要sum1/sum2/sum3任意一个非空,优先级高于全空行
                CASE WHEN COALESCE(sum1, sum2, sum3) IS NOT NULL THEN 1 ELSE 2 END ASC
                -- 同月份有多条非空行时可在这里补充排序规则,比如 ORDER BY 录入时间 DESC
        ) AS rank_num
    FROM [你的原始表/子查询结果]
)
SELECT * -- 按需筛选字段,可排除rank_num列
FROM month_ranked
WHERE rank_num = 1

注意事项

  • 若同月份存在多条带非空sum值的行,可以在ORDER BY后追加自定义排序规则,指定优先保留的行
  • 如果数据覆盖多个年份,需要在PARTITION BY中同时添加年份字段,避免不同年份的同月份数据被错误合并
  • COALESCE函数会依次判断入参字段是否为非空,只要有一个字段有值就返回非空结果,完全匹配你的筛选规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:06:02