2012-07-24 50 views
0

我对MS Access相当陌生,我需要找出按升序将新值的重复实例标记为新列的最佳方法。我已经在python中编写了一个脚本,可以在ArcGIS中完成此任务,但我需要弄清楚它的访问方式。我有一个FIELDS列,其中包含我想检查重复项的名称以及DUP_COUNT列,我希望填充值的发生次数。所以第一个例子将被指定为1,第二个等等。我试着在MS Excel中做类似的事情,我想出了如何标记值的第一次出现,但没有继续。按访问顺序排列的MS Access标记重复项

=IF(COUNTIF(A:A,A2)>1,IF(COUNTIF(A$2:A2,A2)=1,"1","2"),"") 

例子:

FIELDS DUP_COUNT 
Smith   1 
Smith   2 
Smith   3 
Smith   4 
Brown   1 
Brown   2 
+0

什么是第一个?关系数据库中除了您施加的顺序之外,没有第一个。你有日期/编号还是你想先随机? – Fionnuala 2012-07-24 14:33:17

+0

对不起,我对此并不清楚,顺序无关紧要,如果有4个重复的名称,我可以轻松地在每个字段旁边填充4个字符。在我的Python脚本中,我已经将每个字段添加到列表中,然后为每个实例返回一个数字,所以我想我会尝试以同样的方式在访问中执行此操作。 – wllm 2012-07-24 14:41:47

回答

0

让我们说你有一个唯一的ID,你可能会说:

SELECT dups.FIELDS, dups.ID, (
    SELECT Count(*) 
    FROM dups a 
    WHERE a.Fields=dups.Fields And a.ID <= dups.ID) AS RankOfDup 
FROM dups 
ORDER BY dups.FIELDS, dups.ID; 

为了简单地得到重复的次数,你可以说:

SELECT ID, Count(ID) FROM dups 
GROUP BY dups.ID 
HAVING Count(dups.ID)>0 
+0

感谢Remou这个伟大的工程!如果我想检查唯一ID是否唯一,我可以使用类似的方法。我不是故意要问第二个问题,就像澄清使用这种方法一样。 – wllm 2012-07-24 15:17:43

+0

要检查重复项,通常只需计数。 ' – Fionnuala 2012-07-24 15:59:33

+0

非常感谢我的肮脏的问题 – wllm 2012-07-24 16:40:33