Sql MS Access版本=COUNTIF($X$X:X2,X2)?
我正在尝试在MS Access 2007-2016中创建一个报告,该报告将生成一个列,其中包含重复记录的顺序编号,类似于excel中的countif语句。结果数据看起来与此类似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
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值作为当前记录,并且计划的_日期小于当前记录的日期,即基本上按计划的_日期对当前记录进行排序。我也将此信息添加到我的答案中。非常感谢您对此进行扩展,我将尝试从中学习,以备将来使用。