SQL - Consultar periodos (min/max) y crear periodos intermedios

 
Vista:
Imágen de perfil de Matias

Consultar periodos (min/max) y crear periodos intermedios

Publicado por Matias (1 intervención) el 24/11/2021 23:56:18
Hola, Necesito ayuda para unir las tablas DW_HEC_CATALOGO_CURSOS y DW_HEC_CATALOGO_CURSOS_HISTORICO, con el fin de tener una historia de los cambios de catalogo en la asignaturas, para ello se debe tener el periodo de inicio y fin de una asignatura, ejemplo el TAI303 que en la historica aparece desde el 201810 al 999999 y en la tabla actualizada DW_HEC_CATALOGO_CURSOS lo tiene desde el 202110 al 999999 lo que debe mostrar seria desde el 201810 al 202020 y del 202110 al 999999, ademas poblar las inetmedias con el mismo periodo fin que el primero, quedand;



TAI303 201810 - 202020

TAI303 201820 - 202020

TAI303 201910 - 202020

TAI303 201920 - 202020

TAI303 202010 - 202020

TAI303 202020 - 202020

TAI303 202110 - 999999

TAI303 202120 - 999999

TAI303 202210 - 999999



PERO CON TODAS LAS COLUMNAS DE LA TABLA DW_HEC_CATALOGO_CURSOS



ADJUNTO QUERY QUE CONSTRUIMOS PARA MOSTRAR EL PERIODO FIN QUE CORRESPONDE, POR SI SIRVE DE AYUDA.





SELECT A.*,
CASE WHEN MAX(B.CACU_PERIODO_INI) = A.CACU_PERIODO_INI
THEN '999999'
WHEN RIGHT(MAX(B.CACU_PERIODO_INI),2) = '10'
THEN CONCAT(LEFT(MAX(B.CACU_PERIODO_INI),4)-1,'20')
WHEN RIGHT(MAX(B.CACU_PERIODO_INI),2) = '20'
THEN CONCAT(LEFT(MAX(B.CACU_PERIODO_INI),4)-1,'10')
END ULT_PACA_COD
FROM
(
SELECT
ASIG_COD,
CACU_PERIODO_INI
from DW_HEC_CATALOGO_CURSOS_HISTORICO
--WHERE asig_cod = 'tai303'



UNION



SELECT
ASIG_COD,
CACU_PERIODO_INI
from DW_HEC_CATALOGO_CURSOS
--WHERE asig_cod = 'tai303'
)A
LEFT JOIN
(
SELECT
ASIG_COD,
CACU_PERIODO_INI
from DW_HEC_CATALOGO_CURSOS_HISTORICO
--WHERE asig_cod = 'tai303'



UNION



SELECT
ASIG_COD,
CACU_PERIODO_INI
from DW_HEC_CATALOGO_CURSOS
--WHERE asig_cod = 'tai303'
)B ON A.ASIG_COD = B.ASIG_COD
--WHERE A.asig_cod LIKE '%ARQ%'
GROUP BY A.ASIG_COD,A.CACU_PERIODO_INI



ORDER BY 1,2
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