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

时间:2019-03-11 13:59:16

标签: sql ms-access access-vba ms-access-2016

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

例如:

enter image description here

谢谢。

1 个答案:

答案 0 :(得分:0)

没有主键:

假设您的表不包含主键字段,可以使用域聚集函数对记录进行排序,那么一种可能的方法是在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)
    

使用主键:

如果您的表包含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)