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

Access 365中基于Col1的1值区间生成计数列的SQL查询需求

Access 365 实现分组连续计数的SQL方案

要生成包含Col1和辅助列Caux的结果集,其中Caux对每个以Col1=1开头的区间内的行做连续计数,你可以用以下SQL查询:

WITH RankedRows AS (
    SELECT 
        Col1,
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowID
    FROM tblfreq
),
GroupedRows AS (
    SELECT 
        Col1,
        RowID,
        (SELECT COUNT(*) 
         FROM RankedRows AS t2 
         WHERE t2.RowID <= t1.RowID AND t2.Col1 = 1) AS GroupID
    FROM RankedRows AS t1
)
SELECT 
    Col1,
    (SELECT COUNT(*) 
     FROM GroupedRows AS t2 
     WHERE t2.GroupID = t1.GroupID AND t2.RowID <= t1.RowID) AS Caux
FROM GroupedRows AS t1
ORDER BY RowID;

逻辑说明

  1. 生成行号:第一个CTE RankedRows 给每行分配唯一的RowID,确保数据顺序稳定(ORDER BY (SELECT NULL)沿用Access默认的存储顺序);
  2. 划分分组:第二个CTE GroupedRows 计算每行的GroupID——统计从第一行到当前行中Col1=1的累计数量,这样每个1及后续到下一个1之前的行都会归为同一组;
  3. 组内计数:最终查询在每个分组内,统计当前行在组内的位置,得到连续递增的Caux值。

优化提示

如果你的表没有主键,建议先添加自动编号主键列,避免数据存储顺序变化导致结果不稳定:

ALTER TABLE tblfreq ADD COLUMN ID AUTOINCREMENT PRIMARY KEY;

之后把RankedRows里的ORDER BY (SELECT NULL)替换为ORDER BY ID即可。

执行查询后,将得到接受advance事理照RENsw事理 bribOptional​​ broad的结果:

Col1Caux
01
02
11
02
03
04
05
06
11
02
03
11
02

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:48:23