Imprimir página | Cerrar ventana

Extraer filas con diferencias entre dos tablas

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85244
Fecha de impresión: 29/Marzo/2024 a las 14:30


Tema: Extraer filas con diferencias entre dos tablas
Publicado por: marioboss
Asunto: Extraer filas con diferencias entre dos tablas
Fecha de publicación: 05/Mayo/2020 a las 18:13
Hola compañeros.

Necesitaría de vuestra experiencia para una consulta SQL.
Cada día me pasan una extracción en excel que exporto a una tabla Access para poder trabajar con ella. Simplificando, la estructura de la tabla sería así:

Orden    Operación    Avance   Notificación
1234     Taladrado    100%          X
1234     Remachado    50%   
1234     Sellado      0%
4567     Pelado       100%          X
4567     Crimpado     100%
4567     Pineado      20%

Necesiataría que la consulta me mostrara las filas que han sufrido alguna modificación en las columnas Avance o Notificación comparando la tabla de hoy (TablaHoy) con la de ayer (Tabla Ayer). Las columnas Orden y Operación no cambian. Sólo lo hacen las columnas Avance y/o Notificación.
Debajo indico, por ejemplo, la tabla del dia siguiente en la que ha cambiado la segunda y la sexta fila.

Orden    Operación    Avance   Notificación
1234     Taladrado    100%          X
1234     Remachado    80%   
1234     Sellado      0%
4567     Pelado       100%          X
4567     Crimpado     100%
4567     Pineado      20%           X

Muchas gracias por vuestra ayuda.

-------------
"Solo hay dos cosas infinitas en la vida, una el universo y la otra la estupidez de los humanos, aunque de la primera no estoy seguro del todo."Albert Einstein.Saludos a todos los foreros.



Respuestas:
Publicado por: Dabellaso
Fecha de publicación: 05/Mayo/2020 a las 18:35
Supongo que la exportación la haces desde Excel, y la consulta la quieres ver en Access (es lo que entendí)
o aceptas hacer una importación a Access desde Excel (caso contrario) y quieres verlo en Access?

Para poder ayudarte, necesitaría saber cómo obtienes los datos, desde donde inicias el proceso, y donde y como los guardas. Con eso podría ver opciones de por donde empezar

A bote pronto, puedes hacer una consulta de union con las dos tablas, y descartar los duplicados

Saludos


-------------
El saber no ocupa lugar, sólo tiempo


Publicado por: marioboss
Fecha de publicación: 05/Mayo/2020 a las 18:51
Gracias Dabellaso.
Entonces creo que me expliqué mal.
Los datos los tengo en excel. Los importo desde Access todos los días generando una tabla diaria para hacer la consulta SQL desde Access.

Muchas gracias!

-------------
"Solo hay dos cosas infinitas en la vida, una el universo y la otra la estupidez de los humanos, aunque de la primera no estoy seguro del todo."Albert Einstein.Saludos a todos los foreros.


Publicado por: lbauluz
Fecha de publicación: 05/Mayo/2020 a las 19:38
Si es Excel, lo muevo al foro de Excel.

Por otro lado, ¿como tienes los datos?

Quiero decir, ¿tienes una hoja por día?, ¿un libro por día?, están todos los datos en la misma hoja?, si es así ¿como sabes de qué día es cada uno?

Un saludo.

Luis


-------------
El Búho es un pajarraco


Publicado por: marioboss
Fecha de publicación: 05/Mayo/2020 a las 19:54
Hola Ibauluz.

Gracias por tu respuesta.

Trabajo con Access. Los datos me los pasan en una hoja excel (una al día) y yo los importo a Access para meterlos en una tabla (una nueva cada día, la de hoy la llamaría Datos05052020).
Quiero hacer una consulta que compare la tabla Datos05052020 con la tabla Datos04052020 (la de ayer) y me devuelva las filas cuyas columnas Avance y/o Notificación hayan cambiado.

Espero haberme explicado mejor ahora.

Muchas gracias por vuestra paciencia.

-------------
"Solo hay dos cosas infinitas en la vida, una el universo y la otra la estupidez de los humanos, aunque de la primera no estoy seguro del todo."Albert Einstein.Saludos a todos los foreros.


Publicado por: pitxiku
Fecha de publicación: 05/Mayo/2020 a las 19:56
Hace tiempo, en el foro de Nekkito se hizo un reto para llevar información nueva contenida en archivos Excel a una tabla de Access. Igual te da alguna idea (las soluciones están en la última página):

- https://nksvaccessolutions.com/Foro/viewtopic.php?f=17&t=858

Edito: pero si ya tienes hecha la importación, tal vez te sirva el asistente de consultas y, relacionando las 2 tablas, seleccionar los registros que tengan algún dato distinto en los campos deseados.


Publicado por: Dabellaso
Fecha de publicación: 05/Mayo/2020 a las 20:09
Si ya tienes las dos tablas en Access, creo que lo que buscas es una consulta de no coincidentes, el asistente de consultas te ayudará a crear una. Habiendo asistente creo que es mas fácil que lo pruebes a que te lo expliquen y después analizar la consulta resultante por si quieres modificarla

Prueba a ver que tal y nos comentas si era eso lo que buscabas


-------------
El saber no ocupa lugar, sólo tiempo


Publicado por: marioboss
Fecha de publicación: 05/Mayo/2020 a las 21:10
Bueno, pues tras pegarme con la consulta de no coincidentes y adaptando el código SQL, he conseguido sloucionarlo.
La solución (adaptada al ejemplo que he puesto) quedaría así:

SELECT DatosHoy.[Orden], DatosHoy.[Operación], DatosAyer.[Avance], DatosHoy.[Avance], DatosAyer.[Notificación], DatosHoy.[Notificación]
FROM DatosHoy LEFT JOIN DatosAyer ON DatosHoy.[ID] = DatosAyer.[ID]
WHERE ((DatosHoy.[Avance] <> DatosAyer.[Avance]) OR (DatosHoy.[Notificación] <> DatosAyer.[Notificación]))
ORDER BY DatosHoy.[Orden], DatosHoy.[Operación];

Espero que le pueda servir a alguien más.
Sugiero que se vuelva a mover el hilo al foro de Access y, por mi parte, se puede cerrar.

Muchas gracias por vuestro tiempo.

-------------
"Solo hay dos cosas infinitas en la vida, una el universo y la otra la estupidez de los humanos, aunque de la primera no estoy seguro del todo."Albert Einstein.Saludos a todos los foreros.


Publicado por: AnSanVal
Fecha de publicación: 05/Mayo/2020 a las 21:50

Si quieres evaluar antes de pasar a Access:

- Con la primera tabla en A1:D7 y la segunda en F1:I7, utiliza como columna auxiliar J1:J7 y...






En [J2:J7]     =SI(O(C2<>I2;D2<>J2);"cambió";"")


Sustituye «cambió » por lo que prefieras.






-------------
Saludos desde Tenerife.


Publicado por: marioboss
Fecha de publicación: 05/Mayo/2020 a las 22:11
Muchas gracias Antonio.

Así es exactamente como me ha funcionado.

-------------
"Solo hay dos cosas infinitas en la vida, una el universo y la otra la estupidez de los humanos, aunque de la primera no estoy seguro del todo."Albert Einstein.Saludos a todos los foreros.


Publicado por: AnSanVal
Fecha de publicación: 05/Mayo/2020 a las 22:57
¡Me alegro!

Es una fórmula sencilla, pero... si funciona, ¡Perfecto! ¿Para que más? 

Cuando tengas los resultados deseados, simplemente selecciona el rango de celdas (en el ejemplo J2:J7) y da a Copiar/Pegar valores y podrás pasar a Access valores constantes (lo comento por si te pudieran dar problemas las fórmulas), yo de Access... poco y mal  Embarrassed .




-------------
Saludos desde Tenerife.



Imprimir página | Cerrar ventana