** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Extraer filas con diferencias entre dos tablas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Extraer filas con diferencias entre dos tablas

 Responder Responder
Autor
Mensaje
marioboss Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 466
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita marioboss Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Extraer filas con diferencias entre dos tablas
    Enviado: 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.
Arriba
Dabellaso Ver desplegable
Asiduo
Asiduo


Unido: 18/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 264
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Dabellaso Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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


Editado por Dabellaso - 05/Mayo/2020 a las 18:38
El saber no ocupa lugar, sólo tiempo
Arriba
marioboss Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 466
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita marioboss Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton Jail
Estado: Sin conexión
Puntos: 3549
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Hay un culto a la ignorancia y siempre lo ha habido y es alimentado por la falsa noción de que democracia significa que "mi ignorancia es tan buena como su conocimiento". (Isaac Asimov)
Arriba
marioboss Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 466
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita marioboss Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1224
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pitxiku Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.

Editado por pitxiku - 05/Mayo/2020 a las 19:58
Arriba
Dabellaso Ver desplegable
Asiduo
Asiduo


Unido: 18/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 264
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Dabellaso Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
marioboss Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 466
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita marioboss Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5632
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.




Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
marioboss Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 466
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita marioboss Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5632
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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 .


Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable