Access - Consulta sql de ultimos registros sin duplicados

 
Vista:

Consulta sql de ultimos registros sin duplicados

Publicado por Julio German (8 intervenciones) el 07/01/2020 06:49:22
Hola, les pido ayuda pues ya se me quemaron los libros.
Tengo una Tabla con los campos: [Fecha], [Codigo], [Numero],[Ambo], el ultimo campo [ambo] es un campo calculado que me devueldo los dos ultimos numeros del campo [Numero].
Yo necesito seleccionar mediante una consulta los ultimos 100 registros del campo [ambo] sin duplicados, es decir necesito seleccionar del 00 al 99 sin repetidos y los ultimos o mas recientes.
Probe mediante SELECT TOP 100 y luego en la clausula WHERE hacer una subconsulta Con SELECT DISTINCT pero no me a dado resultado.
Si me echan una mano voy a estar muy agradecido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta sql de ultimos registros sin duplicados

Publicado por Anonimo (1975 intervenciones) el 07/01/2020 22:15:54
Para poder trabajar con los dos datos del campo [Ambo], se ha de generar (por cada registro interviniente) dos registros simples, estos datos obtenidos compartirán la fecha y una consulta de unión los aunara como registros independientes.

Un ejemplo Fecha: 1/1/2020
Valor en [Ambo]: 122; 144

Mediante una función de texto se obtendría dos conjuntos de registros (uno con lo que esta 'antes' del punto y coma, otro con lo que esta 'detras') y comparten la fecha:

Fecha: 1/1/2020
[Ambo]: 122

Fecha: 1/1/2020
[Ambo]: 144

Se aúnan en una tabla utilizando UNION :
algo como ….
1
Select Fecha, Mid(Ambo,1,4) as Dato1 From tabla_con datos unión Fecha, Mid(Ambo,5,4) as Dato1 From tabla_con datos

Obtenemos una única serie de datos y se pueden agrupar por el valor (se obtendrá sin repeticiones) e indicando (en la consulta de agrupación) que tome la fecha mas alta, se ordenan por ese mismo campo (la fecha) y se le aplica el limitador TOP

Quizás cueste trabajo la primera vez (sobre todo para definir como individualizar los datos que están en el mismo campo) pero una vez creada la consulta un click y se obtiene el resultado tantas veces como se precise.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sql de ultimos registros sin duplicados

Publicado por Julio German (8 intervenciones) el 07/01/2020 23:22:20
Gracias por responder, la verdad no comprendo bien la rspuesta, o no se si se aplica a mi caso. disculpa mi ignorancia.
Detallo un poco mas la pregunta a ver si logro entenderte.
[Fecha] ; [Ambo]
12/10/16 ; 00
01/01/20 ; 00
11/11/18 ; 10
6/01/20 , 10

asi sucecivamente. es una tabla que tiene mas de 8000 registro por lo tanto del 00 al 99 estan todos repetidos.
Entonces lo que yo necesito es tomar una sola (sin repetidos) vez cada valor del 00 al 99 lo que serian 100 registros, y mostrarlos por la ultima vez que se cargo. Esto ultimo no seria problema ya lo podriamos lograr con un ORDER BY Fecha DESC. Pero lo que no logro es tomar un solo registro de cada valor. O sea un solo registro del 00, una solo registro del 01, y asi sucesivamente hasta el 99.
Desde ya gracias por tomarte el tiempo en responder.
Trate de hacerlo como una union de esta forma pero al ejecutar me dice que es demaiado compleja la consulta:

SELECT TOP 1 Fecha, Ambo
FROM Ambos
WHERE Ambo=00
ORDER BY Fecha DESC UNION

SELECT TOP 1 Fecha, Ambo
FROM Ambos
WHERE Ambo=01
ORDER BY Fecha DESC UNION

SELECT TOP 1 Fecha, Ambo
FROM Ambos
WHERE Ambo=02
ORDER BY Fecha DESC UNION

Y asi hasta el 99 pero al ejecutarla me dice que es muy compleja la consulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sql de ultimos registros sin duplicados

Publicado por Anonimo (1975 intervenciones) el 07/01/2020 23:44:30
No interprete correctamente los datos de partida, considere que en el ultimo campo había dos datos (no las dos ultimas cifras de un dato).

La solución es mas sencilla de lo que parece, lo de TOP carece de sentido practico, porque con dos dígitos nunca se obtendrán mas de cien datos (o 99 + el cero)

Una emulación:

SELECT Max(Fecha) AS La_Fecha, Right(NUMERO,2) AS El_Numero
FROM [aquí la tabla de origen] GROUP BY Right(NUMERO,2)
ORDER BY Max(Fecha) DESC;


Se apreciara que no utilizo el campo calculado 'Ambo' , lo genero en tiempo de ejecución (con lo que se ahorra ese paso previo), pero nada impide sustituir :
Right(NUMERO,2) ===> [Ambo]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sql de ultimos registros sin duplicados

Publicado por Julio German (8 intervenciones) el 08/01/2020 00:01:53
Excelente!! Eso es lo que necesitaba! ! Gracias! !!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar