es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

VISTA de Oracle mostrando cuándo se crearon por última vez los registros en mis tablas.

Tengo las tablas t1 y t2 y ambas tienen columnas created_on que contienen la marca de tiempo cuando se creó cada registro. Lo habitual.

Ahora me gustaría crear la vista que muestre mis tablas y la marca de tiempo del último registro creado (MAX(created_on)) en la tabla correspondiente.

El resultado debería verse así:

tabla | último_registro
======+================
t1    | 10.05.2019
t2    | 12.11.2020

Por ejemplo, puedo obtener la lista de mis tablas con:

SELECT * FROM USER_TABLES WHERE table_name LIKE 'T%'

Me gustaría obtener la marca de tiempo del último registro para cada una de estas tablas.

¿Cómo puedo crear esta vista?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear la vista deseada, puedes lograrlo utilizando una combinación de subconsultas y el operador SQL UNION.

    Aquí tienes la declaración SQL que puedes utilizar:

    CREATE VIEW table_last_record AS
    SELECT 't1' AS table, MAX(created_on) AS last_record FROM t1
    UNION
    SELECT 't2' AS table, MAX(created_on) AS last_record FROM t2;
    

    Esta declaración SQL creará una vista llamada table_last_record con dos columnas: table y last_record.

    La primera subconsulta selecciona la tabla t1 y recupera el valor máximo de created_on de esa tabla. La cláusula AS se utiliza para asignar un alias a las columnas, de modo que puedan ser referenciadas en la consulta externa.

    La segunda subconsulta hace lo mismo, pero selecciona t2 en su lugar.

    El operador UNION combina los resultados de las dos subconsultas en un único conjunto de resultados con dos filas (una para cada tabla).

    Finalmente, la declaración CREATE VIEW crea la vista con el nombre table_last_record.

    Para recuperar los datos de la vista, simplemente puedes consultarla de la siguiente manera:

    SELECT * FROM table_last_record;
    

    Esto devolverá el conjunto de resultados deseado con las columnas table y last_record.

Comments are closed.