Return 字段的唯一记录
Return Unique Records for Field
我们有一个访问数据库,在访问 table 中为每个登录计算机的用户 ID 创建一个 csv 列表。问题是,如果用户标识在一台计算机上多次登录,则用户标识会重复。
让我们假设这就是 table 结构的样子
computer DailyUsers
ABC-123 ml12, rs12, ml12, ml12, ee13
DEF-456 zx44, aa33, zx44
这就是我要查询的 return
Computer DailyUsers
ABC-123 ml12, rs12, ee13
DEF-456 zx44, aa33
我尝试同时使用 Group By
和 Distinct
,但它是逐行查看的,而不是按字段查看的
如何在 Access 2013 中实现这一点?
您可以在 VBA 中为 return 唯一用户创建自定义函数。
在 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;
输入数据及查询结果:
我们有一个访问数据库,在访问 table 中为每个登录计算机的用户 ID 创建一个 csv 列表。问题是,如果用户标识在一台计算机上多次登录,则用户标识会重复。
让我们假设这就是 table 结构的样子
computer DailyUsers
ABC-123 ml12, rs12, ml12, ml12, ee13
DEF-456 zx44, aa33, zx44
这就是我要查询的 return
Computer DailyUsers
ABC-123 ml12, rs12, ee13
DEF-456 zx44, aa33
我尝试同时使用 Group By
和 Distinct
,但它是逐行查看的,而不是按字段查看的
如何在 Access 2013 中实现这一点?
您可以在 VBA 中为 return 唯一用户创建自定义函数。
在 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;
输入数据及查询结果: