Concatenar campo String de varias filas de registros Access

No consigo resolver y pido ayuda a los expertos. Dada la siguiente tabla:

IDENTIFICADOR     FECHA            TEXTO
0306MMM              01/01/2025    Viaje 1
0306MMM              01/01/2025    Viaje 2
0306MMM              02/01/2025    Viaje 1
0307ZZZ                 01/01/2025    Viaje 1
0307ZZZ                 01/01/2025    Viaje 2

Necesitaría el siguiente resultado:

IDENTIFICADOR      FECHA            TEXTO
0306MMM               01/01/2025    Viaje 1, Viaje 2
0306MMM               02/01/2025    Viaje 1
0307ZZZ                  01/01/2025    Viaje 1, Viaje 2

Es decir concatenar el campo TEXTO de los diferentes registros pero agrupando por IDENTIFICADOR y FECHA.

2 respuestas

Respuesta
1

Puede crear una función. Inserte este código en un módulo

Function ConcatenaTexto(strCampo As String, strTabla As String, strAgruparPor As String) As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim strResultado As String
    Set db = CurrentDb
    strSQL = "SELECT [" & strCampo & "] FROM [" & strTabla & "] WHERE " & strAgruparPor & " ORDER BY [" & strCampo & "]"
    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
    If Not rs.EOF Then
        rs.MoveFirst
        Do While Not rs.EOF
            strResultado = strResultado & IIf(strResultado = "", "", ", ") & rs.Fields(strCampo)
            rs.MoveNext
        Loop
    End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    ConcatenaTexto = strResultado
End Function

Utilizar esta función en una consulta, cree una nueva consulta y vaya a vista SQL y pegue este script.

SELECT DISTINCT T1.IDENTIFICADOR, T1.FECHA, ConcatenaTexto("TEXTO", "MiTabla", "IDENTIFICADOR = '" & T1.IDENTIFICADOR & "' AND FECHA = #" & T1.FECHA & "#") AS TextoConcatenado
FROM MiTabla AS T1;

Reemplace MiTabla por el nombre de su tabla

Explicación Detallada de la Consulta

SELECT DISTINCT T1.IDENTIFICADOR, T1.FECHA: Seleccionamos los campos IDENTIFICADOR y FECHA y usamos DISTINCT para asegurarnos de que solo se muestre una fila por cada combinación única de estos dos campos.

ConcatenaTexto(...): Aquí es donde llamamos a la función que creaste en el Paso 1.

El primer parámetro, "TEXTO", es el nombre del campo que quieres concatenar.

El segundo, "MiTabla", es el nombre de la tabla de origen.

El tercer parámetro, "IDENTIFICADOR = '" & T1.IDENTIFICADOR & "' AND FECHA = #" & T1.FECHA & "#", es la clave. Le dice a la función que busque todos los registros en MiTabla donde IDENTIFICADOR y FECHA coincidan con los valores de la fila actual que está procesando la consulta principal.

AS TextoConcatenado: Le da un nombre a la nueva columna que contiene el texto concatenado, para que el resultado sea más claro.

FROM MiTabla AS T1: Especifica la tabla de origen y le asigna un alias (T1) para que el código sea más legible.

Cuando lo hago con PostgreSQL utilizo algo más simple, en su caso sería.

SELECT
    Identificador,
    FECHA,
    STRING_AGG(TEXTO, ', ') AS TextoConcatenado
FROM
   MiTabla
GROUP BY
    Identificador,
    FECHA
ORDER BY
    Identificador,
    FECHA;

Observe porque es importante utilizar PostgreSQLcom BackEnd con Access.

Respuesta

I. Hola Compañeros, perdonen la intromisión.

Alfonso, vi que el experto Eduardo Pérez Fernández ya le aportó un modo de hacer la concatenación, pero quisiera trasladarle la información que vi durante la mañana por si en algún otro momento pudiese serle de un utilidad adicional.

Disculpe por las molestias y la forma de responderle. Suerte.


https://stackoverflow.com/questions/9217234/concatenating-multiple-rows-into-single-line-in-ms-access

https://communities-sas-com.translate.goog/t5/SAS-Programming/Concatenate-multiple-rows-of-text-to-one-row/td-p/867787?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://stackoverflow.com/questions/47160734/access-combining-multiple-rows-into-one-but-show-text

https://www-access--programmers-co-uk.translate.goog/forums/threads/concatenate-the-text-fields-for-similar-records.331251/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://stackoverflow.com/questions/9217234/concatenating-multiple-rows-into-single-line-in-ms-access/9232195#9232195

https://communities-sas-com.translate.goog/t5/SAS-Programming/Concatenate-multiple-rows-of-free-text-grouped-by-an-ID/td-p/837462?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://www-sqlmatters-com.translate.goog/Articles/Converting%20row%20values%20in%20a%20table%20to%20a%20single%20concatenated%20string.aspx?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://superuser-com.translate.goog/questions/1150000/how-to-combine-texts-values-from-multiple-rows-into-a-single-cell-in-access-quer?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://superuser-com.translate.goog/questions/50396/merge-multiple-columns-into-one-via-a-query-in-an-access-database?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://superuser.com/questions/1150000/how-to-combine-texts-values-from-multiple-rows-into-a-single-cell-in-access-quer

https://sentry-io.translate.goog/answers/how-to-concatenate-text-from-multiple-rows-into-a-single-text-string-in-sql-server/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://stackoverflow.com/questions/15624845/concatenate-records-and-group-by-in-access

https://www-databasejournal-com.translate.goog/ms-access/concatenate-column-values-from-multiple-rows-into-a-single-column-with-access/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://stackoverflow.com/questions/76146400/concatenate-related-records-in-ms-access

https://stackoverflow.com/questions/12427975/concatenate-multiple-rows-in-one-field-in-access

https://www.accessforums.net/showthread.php?t=77695

https://post-bytes-com.translate.goog/forum/topic/access/627959-data-from-multiple-rows-into-one-string?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://www.mrexcel.com/board/threads/concatenate-records-from-record-set-rs-sql-query-from-access-database.1113275/

https://superuser-com.translate.goog/questions/1150000/how-to-combine-texts-values-from-multiple-rows-into-a-single-cell-in-access-quer?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://www-access--programmers-co-uk.translate.goog/forums/threads/concatenate-column-values-from-multiple-rows-into-a-single-column.64611/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://www.reddit.com/r/MSAccess/comments/n9dx46/combine_one_column_from_multiple_rows_into_a/

https://www.mrexcel.com/board/threads/create-unique-id-in-table-by-concatenating-two-text-columns-unknown-function-problem.468151/

https://www.mrexcel.com/board/threads/return-fields-from-multiple-records-in-a-single-textbox.1202442/

https://www-access--programmers-co-uk.translate.goog/forums/threads/create-string-from-multiple-records-but-one-column.313699/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://www.youtube.com/watch?v=fvN4l1zhVl8

https://www.youtube.com/watch?v=7_mpvTm19-I

https://599cd-com.translate.goog/blog/display-article.asp?ID=1760&X&_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas