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

Microsoft SQL查询求助:新增列统计MRN的出现次数

解决SQL中新增分组计数列的问题

错误原因

你直接使用COUNT(mrn)属于聚合函数,SQL的聚合规则要求:当SELECT语句中包含聚合函数时,所有非聚合列必须出现在GROUP BY子句中。但你的需求是保留所有原始数据行,同时每行显示对应mrn的总出现次数,普通聚合分组会合并行,不符合需求,因此需要用窗口函数来实现。

解决方案

使用窗口函数COUNT() OVER(PARTITION BY ...),它会在不合并行的前提下,对指定分组内的行数进行统计,并将结果赋值给分组内的每一行。

方法1:使用CTE(公共表表达式)

把你现有的复杂查询封装成CTE,再添加计数列:

WITH OriginalData AS (
    -- 替换成你实际的复杂查询语句
    SELECT mrn, name, Med1, Med2, Med4
    FROM your_table_or_complex_query
)
SELECT
    mrn,
    name,
    COUNT(mrn) OVER(PARTITION BY mrn) AS count,
    Med1,
    Med2,
    Med4
FROM OriginalData;

方法2:使用子查询

直接在原查询外层添加计数列:

SELECT
    mrn,
    name,
    COUNT(mrn) OVER(PARTITION BY mrn) AS count,
    Med1,
    Med2,
    Med4
FROM (
    -- 替换成你实际的复杂查询语句
    SELECT mrn, name, Med1, Med2, Med4
    FROM your_table_or_complex_query
) AS SubQuery;

说明

  • PARTITION BY mrn表示按照mrn进行分组统计,因为示例中name与mrn一一对应,也可以写成PARTITION BY mrn, name,结果一致。
  • 窗口函数不会改变原始数据的行数,只是为每行添加对应分组的统计值,完美匹配你的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:07:33