SELECT E.ESTCOD AS IDESTACION, E.ESTNOM AS ESTACION, TD.TIPO, NVL(CV.TOTAL,0) AS TOTAL FROM(SELECT REGEXP_SUBSTR('NORMAL,SABADO,DOMINGO,FERIADO', '[^,]+', 1, LEVEL) AS TIPO
FROM DUAL CONNECT BY REGEXP_SUBSTR('NORMAL,SABADO,DOMINGO,FERIADO', '[^,]+', 1, LEVEL) IS NOT NULL) TD
JOIN (SELECT ESTCOD, ESTNOM,ORDEN FROM TB_ESTACION WHERE TIPCOD = 0 ) E ON 1=1
LEFT JOIN
(SELECT * FROM(
SELECT 'NORMAL' AS TIPO, V.ESTCOD, SUM(V.VALCAN) AS TOTAL FROM TM_VALIDACION V JOIN TB_FECHA F ON F.FECPERFEC = V.VALPERFEC AND DIACOD IN (1, 2, 3, 4, 5) AND FECFER = 0 AND F.FECFEC BETWEEN TO_DATE('2010-07-01', 'YYYY-MM-DD') AND TO_DATE('2024-04-19', 'YYYY-MM-DD') GROUP BY V.ESTCOD
UNION
SELECT 'SABADO' AS TIPO, V.ESTCOD, SUM(V.VALCAN) AS TOTAL FROM TM_VALIDACION V JOIN TB_FECHA F ON F.FECPERFEC = V.VALPERFEC AND DIACOD = 6 AND FECFER = 0 AND F.FECFEC BETWEEN TO_DATE('2010-07-01', 'YYYY-MM-DD') AND TO_DATE('2024-04-19', 'YYYY-MM-DD') GROUP BY V.ESTCOD
UNION
SELECT 'DOMINGO' AS TIPO, V.ESTCOD, SUM(V.VALCAN) AS TOTAL FROM TM_VALIDACION V JOIN TB_FECHA F ON F.FECPERFEC = V.VALPERFEC AND DIACOD = 7 AND FECFER = 0 AND F.FECFEC BETWEEN TO_DATE('2010-07-01', 'YYYY-MM-DD') AND TO_DATE('2024-04-19', 'YYYY-MM-DD') GROUP BY V.ESTCOD
UNION
SELECT 'FERIADO' AS TIPO, V.ESTCOD, SUM(V.VALCAN) AS TOTAL FROM TM_VALIDACION V JOIN TB_FECHA F ON F.FECPERFEC = V.VALPERFEC AND FECFER = 1 AND F.FECFEC BETWEEN TO_DATE('2010-07-01', 'YYYY-MM-DD') AND TO_DATE('2024-04-19', 'YYYY-MM-DD') GROUP BY V.ESTCOD
)) CV
ON CV.ESTCOD = E.ESTCOD AND CV.TIPO = TD.TIPO
ORDER BY E.ORDEN, TD.TIPO