如果我有以下 MS Access 表和样本数据,
Status tbl UpdateID PK CustomerNo text StatusType text UpdateDate date
UpdateID, CustomerNo, StatusType, UpdateDate 001, 0099, Open, 2011-01-01 002, 0099, Pend, 2011-01-02 003, 0100, Open, 2011-01-03 004, 0099, Appr, 2011-01-04 005, 0100, Pend, 2011-01-05 006, 0099, Clsd, 2011-01-07
那么我该如何编写一个查询来产生以下合并/串联输出?
CustomerNo, UpdateDate 0099, 2011-01-01;2011-01-02;2011-01-04;2011-01-07 0100, 2011-01-03;2011-01-05
最佳答案
如果不使用代码迭代返回的行并自行构建字符串,在 Access 中没有方便的方法来执行此操作。
这里有一些代码可以帮助你做到这一点:
Public Function ListOf(sSQL As String, Optional sSeparator As String = ", ") As String
Dim sResults As String
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(sSQL)
While Not rs.EOF
If sResults = "" Then
sResults = Nz(rs.Fields(0).Value, "???")
Else
sResults = sResults + sSeparator & Nz(rs.Fields(0).Value, "???")
End If
rs.MoveNext
Wend
ListOf = sResults
End Function
下面是如何在 Access 查询中使用它:
SELECT [CustomerNo],
(ListOf('SELECT [UpdateDate] FROM StatusTbl WHERE CustomerNo = ' + CStr([CustomerNo]))) AS UpdateDates
FROM StatusTbl
请注意,这仅在您在 Access 中执行查询时有效,从(例如)ADO 连接执行的查询将无法 Access ListOf 函数。
关于sql - 用于连接或合并相关字段的 MS Access SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785713/