Sql MS Access版本=COUNTIF($X$X:X2,X2)?

Sql MS Access版本=COUNTIF($X$X:X2,X2)?,sql,ms-access,Sql,Ms Access,我正在尝试在MS Access 2007-2016中创建一个报告,该报告将生成一个列,其中包含重复记录的顺序编号,类似于excel中的countif语句。结果数据看起来与此类似 Work Order Activity SCH Date Count DS18820442 DS18820442-1 3/9/2020 1 DS18823101 DS18823101-1 3/11/2020 1 DS18823101 DS1882

我正在尝试在MS Access 2007-2016中创建一个报告,该报告将生成一个列,其中包含重复记录的顺序编号,类似于excel中的countif语句。结果数据看起来与此类似

Work Order      Activity      SCH Date      Count
DS18820442  DS18820442-1  3/9/2020      1
DS18823101  DS18823101-1  3/11/2020     1         
DS18823101  DS18823101-1  3/12/2020     2         
DS17914849  DS17914849-1  1/3/2020      1        
DS17914849  DS17914849-1  1/6/2020      2        
DS17914849  DS17914849-1  1/7/2020      3        

在access中是否有类似的方法可以轻松做到这一点?

如果有一列指定行的顺序,则可以使用相关子查询:

select t.*,
       (select count(*)
        from t as t2
        where t2.code = t.code and t2.activity = t.activity and
              t2.? <= t.?
       ) as newcol
from t;

那个?用于指定排序的列。

根据您评论中的信息,尝试对Gordon的代码进行以下修改:

select 
    t.*, 
    (
        select count(*) from [12_6] t2 
        where 
            t2.[Work Order] = t.[Work Order] and 
            t2.[Activity] = t.[Activity] and
            t2.[Scheduled_Date] <= t.[Scheduled_Date]
    ) 
    as seqcol
into test_sequence 
from [12_6] t;

这里,查询使用的是相关子查询:对于表中的每个记录,子查询计算表中与当前记录具有相同工作顺序和活动值的记录数,对于计划的日期小于当前记录的日期,即基本上按计划的日期对当前记录进行排序

您需要一列来指定行的顺序。我添加了一个日期列用于订购,但我相信我可能弄错了什么。克利最终对我犯了错误。选择[12_6}.*,从[12_6]中选择计数*作为[12_6_2],其中[12_6_2]。[工作单]=[12_6]。[工作单]和[12_6_2]。[活动]=[12_6]。[活动]和[12_6_2]。[计划日期]@Cri…有趣的是,您更改了列的名称,从而使此答案无效。很抱歉,我在我的个人表格中将其重命名,以反映企业名称,然后按照您的建议用日期更新。这并不意味着使您的帮助部分无效。谢谢,这完全符合需要!我有一个问题,您是否可以回答,以便我可以更好地理解它。这几乎只是一个自联接吗?我有点搞不清楚日期行到底在做什么。只是引用同一列来创建从最早到最新的顺序?这是一个相关的子查询:对于表中的每个记录,子查询计算表中具有相同工作顺序和活动的记录数y值作为当前记录,并且计划的_日期小于当前记录的日期,即基本上按计划的_日期对当前记录进行排序。我也将此信息添加到我的答案中。非常感谢您对此进行扩展,我将尝试从中学习,以备将来使用。