我们有一个访问数据库在访问表中为登录到计算机的每个用户标识创建一个csv列表。问题是如果用户标识在一台计算机上多次登录,则重复使用用户标识。
我们假设这就是表结构的样子
computer DailyUsers
ABC-123 ml12, rs12, ml12, ml12, ee13
DEF-456 zx44, aa33, zx44
这就是我想要一个返回的查询
Computer DailyUsers
ABC-123 ml12, rs12, ee13
DEF-456 zx44, aa33
我尝试同时使用Group By
和Distinct
但是逐行查找,而不是基于字段
如何在Access 2013中实现这一目标?
答案 0 :(得分:2)
您可以在VBA中创建自定义功能,仅返回唯一身份用户。
在VBA模块中添加:
Option Compare Database
Option Explicit
Public Function DistinctOnly(txt As String)
Dim arr, v, rv As String
Dim d As Object
arr = Split(txt, ",")
If UBound(arr) > 0 Then
Set d = CreateObject("scripting.dictionary")
For Each v In arr
d(Trim(v)) = 1
Next v
rv = Join(d.keys, ",")
Else
rv = txt
End If
DistinctOnly = rv
End Function
用法:
SELECT Table1.[ID], Table1.[Users], DistinctOnly(Table1.[Users]) as UsersX
FROM Table1;
输入数据和查询结果: