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

MSSQL实现按代码聚合统计出现次数并展示对应最新录入的描述

解决方案:MSSQL按最新录入描述统计Code出现次数

你遇到的问题很典型——MAX(description)是按字符串字典序取最大值,而不是按录入顺序(id)取最新的描述。要实现需求,核心是先找到每个code对应的最大id(最新录入记录),再关联获取对应的描述,最后结合统计次数。

下面是两种可靠的MSSQL实现方案:

方法一:子查询关联最大ID

这种方式逻辑直观,先统计每个code的出现次数,再关联到对应code的最新记录:

SELECT 
    t.description,
    cnt.value
FROM (
    -- 先统计每个code的总次数
    SELECT 
        code,
        COUNT(*) AS value
    FROM your_table  -- 替换成你的表名
    GROUP BY code
) cnt
-- 关联原表,找到每个code对应最大id的记录
JOIN your_table t ON cnt.code = t.code
WHERE t.id = (SELECT MAX(id) FROM your_table WHERE code = cnt.code)
ORDER BY cnt.value DESC;

方法二:窗口函数标记最新记录

用ROW_NUMBER()窗口函数给每个code的记录按id降序排名,排名为1的就是最新记录,再和统计结果关联:

WITH RankedDescriptions AS (
    -- 给每个code的记录按id降序排名,rn=1是最新的
    SELECT 
        id,
        code,
        description,
        ROW_NUMBER() OVER (PARTITION BY code ORDER BY id DESC) AS rn
    FROM your_table  -- 替换成你的表名
),
CodeCounts AS (
    -- 统计每个code的总次数
    SELECT 
        code,
        COUNT(*) AS value
    FROM your_table
    GROUP BY code
)
-- 关联最新描述和统计结果
SELECT 
    rd.description,
    cc.value
FROM CodeCounts cc
JOIN RankedDescriptions rd ON cc.code = rd.code
WHERE rd.rn = 1
ORDER BY cc.value DESC;

为什么这两种方法可行?

两种方案都是通过id的最大值来锁定最新录入的描述,完全避开了字符串排序的干扰,确保拿到的是用户最后录入的正确描述。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:57:36