En una base de datos de Oracle tengo una tabla con contenido similar a este:
Market_Intro_Date Change_Date Author
-------------------------------------------
01.06.2025 10.07.2020 Meyer *
01.01.2025 30.06.2020 Harrin
01.01.2025 01.05.2020 Floyd
01.01.2025 15.04.2020 Peterson *
01.12.2024 20.03.2020 George
01.12.2024 10.03.2020 Smith
01.12.2024 15.01.2020 George *
01.01.2025 15.12.2019 Lee
01.01.2025 01.11.2019 Alfonso
01.01.2025 10.10.2019 Peterson *
01.07.2025 30.09.2019 Smith *
01.07.2024 20.09.2019 Lee
01.07.2024 10.09.2019 Meyer
01.07.2024 01.05.2019 Smith *
Necesito una consulta SQL que devuelva la primera aparición de cada cambio de la fecha de introducción al mercado (marcada con * al final) junto con la fecha de cambio y el autor.
Entonces el resultado de la consulta será:
Market_Intro_Date Change_Date Author
-------------------------------------------
01.06.2025 10.07.2020 Meyer
01.01.2025 15.04.2020 Peterson
01.12.2024 15.01.2020 George
01.01.2025 10.10.2019 Peterson
01.07.2024 01.05.2019 Smith
Gracias de antemano
Puede utilizar la agregación, con la keep ... first
extensión:
select Market_Intro_Date,
min(Change_Date) as Change_Date,
min(Author) keep (dense_rank first order by Change_Date) as Author
from your_table
group by Market_Intro_Date
MARKET_INTRO_DATE | CHANGE_DATE | AUTHOR
:---------------- | :---------- | :-------
01-JUL-24 | 01-MAY-19 | Smith
01-DEC-24 | 15-JAN-20 | George
01-JAN-25 | 10-OCT-19 | Peterson
01-JUN-25 | 10-JUL-20 | Meyer
01-JUL-25 | 30-SEP-19 | Smith
Leer más .
Me perdí que una de las fechas se repite, por lo que es un problema de brechas e islas. Tabibitosán al rescate:
select Market_Intro_Date,
min(Change_Date) as Change_Date,
min(Author) keep (dense_rank first order by Change_Date) as Author
from (
select Market_Intro_Date, Change_Date, Author,
row_number() over (partition by Market_Intro_Date order by Change_Date)
- row_number() over (order by Change_Date) as grp
from your_table
)
group by Market_Intro_Date, grp
order by Change_Date desc;
MARKET_INTRO_DATE | CHANGE_DATE | AUTHOR
:---------------- | :---------- | :-------
01-JUN-25 | 10-JUL-20 | Meyer
01-JAN-25 | 15-APR-20 | Peterson
01-DEC-24 | 15-JAN-20 | George
01-JAN-25 | 10-OCT-19 | Peterson
01-JUL-25 | 30-SEP-19 | Smith
01-JUL-24 | 01-MAY-19 | Smith
Esto también tiene una segunda fila para Smith, pero parece correcto; No estoy seguro de si los datos de la muestra no incluyeron un asterisco o si el 01.07.2025 fue un error tipográfico.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras