【问题标题】:SQL: How can I concatenate grouped values? [duplicate]SQL:如何连接分组值? [复制]
【发布时间】:2020-04-03 10:32:30
【问题描述】:

如果我有下表(如下图所示),如何编写连接分组结果的 SQL 代码?

对于这个例子,我想按 LetterColumn 分组并连接 NumberColumn

所以想要的结果是:

注意:此处发布的相同问题不是针对 SQL,而是针对 Power Query: PowerQuery: How can I concatenate grouped values?

【问题讨论】:

  • 您需要编写一个 UDF 来执行此操作或在 VBA 中编写代码。

标签: sql ms-access


【解决方案1】:

下面是一个小的 VBA 程序,它对给定字母的数字列进行分组(不带引号,添加起来很简单):

Public Function fGroupColumn(strLetter 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 NumberColumn FROM tblColumn WHERE LetterColumn='" & strLetter & "' ORDER BY NumberColumn ASC;"
    Set rsData = db.OpenRecordset(strSQL)
    If Not (rsData.BOF And rsData.EOF) Then
        Do
            fGroupColumn = fGroupColumn & rsData!NumberColumn & ","
            rsData.MoveNext
        Loop Until rsData.EOF
    End If
    If Right(fGroupColumn, 1) = "," Then fGroupColumn = Left(fGroupColumn, Len(fGroupColumn) - 1)
fExit:
    On Error Resume Next
    rsData.Close
    Set rsData = Nothing
    Set db = Nothing
    Exit Function
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "fGroupColumn", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume fExit
End Function

然后,您可以在 Access 查询中使用此函数来获得所需的结果。

问候,

【讨论】:

    猜你喜欢
    • 2017-10-18
    • 2011-03-14
    • 2019-03-09
    • 2023-04-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 2021-12-27
    • 2016-12-06
    相关资源
    最近更新 更多