Obtener una columna como datos de fila

Tal vez el título no es lo suficientemente claro. Realizo una consulta que me devuelve datos (texto) de la siguiente forma:

Campo1 Campo2

Alberto leche

Alberto pan

Beatriz pan

Beatriz Chocolate

La tabla a la que consulto está así diseñada.

Quisiera obtener una fila por cada registro distinto:

Campo1 Campo2

Alberto     leche ; pan

Beatriz      pan ; Chocolate

1 respuesta

Respuesta
2

Podrías hacer una combinación de VBA y consulta: crear un función en VBA que te devuelva encadenados todos los campo2 que corresponden a cada campo1 y usar esa función en la consulta para obtener el resultado que buscas. Algo así:

Public Funcion fncEncadenaCampo2(elCampo1 As String) As String
Dim rst As DAO.Recordset
Set rst=CurrentDb.OpenRecordset("SELECT Campo2 FROM Tabla WHERE Campo1='" & elCampo1 & "'")
rst.MoveFirst
Do Until rst.EOF
  fncEncadenaCampo2=fncEncadenaCampo2 & rst(0) & ","
  rst.MoveNext
Loop
fncEncadenaCampo2=Left(fncEncadenaCampo2,Len(fncEncadenaCampo2)-1)
rst.Close
End Function

Y luego creas una consulta con esta SQL:

SELECT DISTINCT Campo1, fncEncadenaCampo2([Campo1]) AS NCampo2 FROM TuTabla

Y listo, obtendrás el resultado que buscas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas