Determinar la fecha más reciente

Tengo 6 campos de fecha en 6 diferentes tablas y deseo hacer una selección de la fecha más reciente de entre los 6 campos (es decir, de entre las 6 tablas), y al mismo tiempo pasarlos a una sola tabla. ¿Cómo puedo hacer ésto? Un ejemplo sería lo ideal.
Gracias de antemano por la ayuda.

1 respuesta

Respuesta
1
Estimado/a pitomase:
La mejor forma es que tengas las 6 tablas indexadas por fecha en modo DESCENDENTE porque sino tendrás que hacer un "APPEND FROM" o un "SET FILTER" o un "SELECT QUERY", pero estos 3 procesos tardan mucho...
En este ejemplo tengo 6 tablas iguales (que pueden ser distintas también) ordenadas por el campo fecha y con la siguiente estructura:
Fecha d
NRO_DOCU N 8
Luego realizo el siguiente codigo:
SET EXCLUSIVE ON
SET UNIQUE OFF
* Ordeno las tablas por FECHA en forma descendente...
USE TABLA1 ALIAS TABLA1
INDEX ON FECHA TAG TABLA1 DESCENDING
USE TABLA2 ALIAS TABLA2
INDEX ON FECHA TAG TABLA2 DESCENDING
USE TABLA3 ALIAS TABLA3
INDEX ON FECHA TAG TABLA3 DESCENDING
USE TABLA4 ALIAS TABLA4
INDEX ON FECHA TAG TABLA4 DESCENDING
USE TABLA5 ALIAS TABLA5
INDEX ON FECHA TAG TABLA5 DESCENDING
USE TABLA6 ALIAS TABLA6
INDEX ON FECHA TAG TABLA6 DESCENDING
* Creo una tabla temporal...
CREA CURSOR CURAUX (FECHA D, DOCUMENTO N(8))
* Pongo SET NEAR en ON para que encuentre la fecha mas reciente...
SET NEAR ON
SELECT TABLA1
SEEK DATE() && Encuentro la fecha mas reciente en la TABLA1...
SCATTER MEMVAR && Cargo en memoria el contenido de los campos...
SELECT CURAUX && Agrego un nuevo registro en la tabla temporal...
APPE BLANK
REPLACE FECHA WITH M.FECHA
REPLACE DOCUMENTO WITH M.NRO_DOC
* Hago lo mismo con el resto de las tablas...
SELECT TABLA2
SEEK DATE()
SCATTER MEMVAR
SELECT CURAUX
APPE BLANK
REPLACE FECHA WITH M.FECHA
REPLACE DOCUMENTO WITH M.NRO_DOC
*
SELECT TABLA3
SEEK DATE()
SCATTER MEMVAR
SELECT CURAUX
APPE BLANK
REPLACE FECHA WITH M.FECHA
REPLACE DOCUMENTO WITH M.NRO_DOC
*
SELECT TABLA4
SEEK DATE()
SCATTER MEMVAR
SELECT CURAUX
APPE BLANK
REPLACE FECHA WITH M.FECHA
REPLACE DOCUMENTO WITH M.NRO_DOC
*
SELECT TABLA5
SEEK DATE()
SCATTER MEMVAR
SELECT CURAUX
APPE BLANK
REPLACE FECHA WITH M.FECHA
REPLACE DOCUMENTO WITH M.NRO_DOC
*
SELECT TABLA6
SEEK DATE()
SCATTER MEMVAR
SELECT CURAUX
APPE BLANK
REPLACE FECHA WITH M.FECHA
REPLACE DOCUMENTO WITH M.NRO_DOC
*
SELECT CURAUX && Muestro la tabla temporal
Go top
Brow normal
Este ejemplo es la forma más rápida de hacer la selección en múltiples tablas.
Espero que te sea de utilidad. SUERTE!
Muchas gracias falvarez. Tu respuesta es atinada. Como señalas, esta es la forma más rápida (y yo agragaría... más apropiada) de hacerlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas