后缀字段值基于表中的出现次数

问题描述 投票:2回答:1

我在MS Access中有一个表有一个字段layout_desc。我需要创建一个查询,通过添加表中重复值的次数来更改此字段中的每个值。

例如:

enter image description here

谢谢。

sql ms-access access-vba ms-access-2016
1个回答
0
投票

Without a primary key:

假设您的表不包含使用域聚合函数对记录进行排序的主键字段,一种可能的方法是在VBA中使用静态变量。

  • 使用Alt + F11打开VBA IDE
  • 插入一个新的公共模块Alt + I,M
  • 将以下基本代码复制到新模块中: Function Occurrence(Optional strVal As String) As Long Static lngTmp As Long Static strTmp As String If strTmp = strVal Then lngTmp = lngTmp + 1 Else lngTmp = 1 strTmp = strVal End If Occurrence = lngTmp End Function
  • 在MS Access中,使用以下SQL创建新查询,将YourTable更改为表的名称: update (select t.layout_desc from YourTable as t order by t.layout_desc) q set q.layout_desc = q.layout_desc & occurrence(q.layout_desc)

With a primary key:

如果您的表要包含Long Integer数据类型的主键(例如id),则可以通过以下方式使用域聚合函数DCount

update YourTable t
set t.layout_desc = t.layout_desc & 
dcount("*","YourTable","layout_desc = '" & t.layout_desc & "' and id <= " & t.id)
© www.soinside.com 2019 - 2024. All rights reserved.