Varios registros a varias columnas

Tengo una base de datos access con la siguiente información en una tabla:
Id causa
37 cajeros
37 unidad de billetes
37 fuera de servicio
38 impresora
38 atasca papel
39 cpu
39 no arranca
40 sin especificar
41 dispensador
41 fuera de linea
Transformarla en:
Id causa1 causa2 causa3
37 cajeros unidad de billetes fuera de servicio
38 impresora atasca papel
39 cpu no arranca
40 sin especificar
41 dispensador fuera de linea
Gracias de antemano
{"lat":36.5626000373855,"lng":-5.2294921875}

1 respuesta

Respuesta
1
Para empezar entiendo que "ocultas algún campo más". Me explico: tienes una tabla con los datos que comentas, correcto. ¿Y?. Das una información muy sesgada de lo que pretendes hacer, vale. Ahora te pregunto yo ¿Por que en el resultado que pones el primer registro tiene que ser :
ID    CAUSA1  CAUSA2                       CAUSA3
37 cajeros unidad de billetes fuera de servicio
¿De dónde sale que sea así?. Si no especificas un poco más, entenderás que es muy difícil ayudar. (Date cuenta de que tu sabes cómo lo tienes "montado", los demás, ni idea.
Un cordial saludo.
Perdona por la brevedad del planteamiento.
La verdad es que no lo tengo "montado", me encuentro con esta información y necesito reestructurarlo, me explico:
Los primeros registros son los que tengo no hay columna oculta. Corresponde a la tipificación de averías. Los datos de entrada son los que hay no hay más. Cada avería puede estar tipificada por uno, dos, tres o cuatro filas (registros) quiero obtener por cada avería la tipificación que le corresponde, pero un sola fila (registro) con una o más columnas. No sé si se puede hacer sin recurrir a código, solo con consultas.
Gracias por tu pronta contestación.
Un saludo,
De nuevo sigo sin entenderlo muy bien, pero si me ciño a lo que pides y contando sólo con esos datos, puedes hacer lo que quieres con una consulta de referencias cruzadas.
La SQL de esa consulta sería:
TRANSFORM First(Tabla1. Causa) AS PrimeroDecausa
SELECT Tabla1.id
FROM Tabla1
GROUP BY Tabla1.id
PIVOT "causa_" & DCount("*","Tabla1","id=" & id & " And causa <='" & causa & "'")

Cambia dónde pone Tabla1 por el nombre de tú tabla.
Un saludo.
De nuevo muchas gracias por tu pronta contestación, ahora te pido un poco de paciencia.
He generado la consulta (Access) en sql
TRANSFORM First(TblTipificacion.causa) AS PrimeroDeCausa
SELECT TblTipificacion.ID
FROM TblTipificacion
GROUP BY TblTipificacion.ID
PIVOT "causa_" & DCount("*","Tipificacion","ID=" & [ID] & " And causa <= " & [causa] & "")
La instrucción dcount cuenta por cada ID el número de causa menores o igual que la actual, (4,3,2,1) es lo que entiendo. Pero me da el siguiente error:
"no coinciden los tipos de datos en la expresión de criterios."
Debe ser los tipos de datos del modificador PILOT, por donde puedo empezar a comprobar. He realizado varios cambios, y no lo he encontrado.
Si no puedes dedicarle más tiempo lo entiendo y daré como buena tu respuesta y pasaré a valorarla. Seguiré quebrandome los sesos.
Muchas gracias y un saludo,
Así a bote pronto, sin darle muchas vueltas, eso es problema de la sentencia:
PIVOT "causa_" & DCount("*","Tipificacion","ID=" & [ID] & " And causa <= " & [causa] & "")
Lo que te dice Access es que has puesto la sintaxis para un tipo de campo distinta de la que tien.
Tienes que mirar de que tipo (texto, numérico) es cada dato y ponerlo de la forma correcta. Si causa es texto, debes usar las comillas simples. Creo, sin probarlo, que el final seria así
......<='" & [causa] & "'"). 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas