Microsoft Access 2016 汇总并合并 Table 与 SQL

Microsoft Access 2016 Summarize and Merge Table with SQL

我有一个 table 需要格式化以用于手动上传过程。 table 有数千行,所以我需要使用 repeatable 过程来快速修复数据提供给我的方式,使其成为所需的方式。我今天控制数据的方式的能力为零。但是,由于系统限制,我必须格式化它才能使用它。我现在的table是4列,我需要输出成3列。我必须按字段名称分组:“品牌”和“促销”。字段名称:“skus” 我需要通过单个“品牌”和“促销”组合将它们合并为一个连续的字符串。

给定品牌存在重复的“促销”,因为它们是在产品级别创建的。但是,他们进入的系统需要是“品牌”、“促销”、“库存量”。

不太确定我是否需要使用 VBA 在 Access 中执行某些操作。或者我可以在两个不同的查询中执行此操作。

您将需要使用一些 VBA 来完成此操作。 VBA 需要循环来自 table 的数据记录集,根据品牌和促销过滤并构建 sku 字符串。可能是这样的:

Function fJoinData(strBrand As String, strPromotion As String) As String
    On Error GoTo E_Handle
    Dim db As DAO.Database
    Dim rsData As DAO.Recordset
    Dim strSQL As String
    Set db = DBEngine(0)(0)
    strSQL = "SELECT skus FROM Table1 " _
        & " WHERE Brand='" & strBrand & "' " _
        & " AND Promotion='" & strPromotion & "';"
    Set rsData = db.OpenRecordset(strSQL)
    If Not (rsData.BOF And rsData.EOF) Then
        Do
            fJoinData = fJoinData & ", " & rsData!skus
            rsData.MoveNext
        Loop Until rsData.EOF
    End If
    If Left(fJoinData, 2) = ", " Then fJoinData = Mid(fJoinData, 3)
fExit:
    On Error Resume Next
    rsData.Close
    Set rsData = Nothing
    Set db = Nothing
    Exit Function
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "fJoinData", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume fExit
End Function

与其插入 table,我建议只创建一个可以导出的查询:

SELECT DISTINCT 
    T.Brand, 
    T.Promotion, 
    fJoinData(T.Brand,T.Promotion) AS skus
FROM Table1 AS T

此致,