Executei a Query utilizando as dicas do ( stcoutinho ) e o resultado foi muito bom. Antes demora em torno de 16 segundos para gerar, agora demorou apenas 1 segundo....
Quando utilizava os UNION a minha query demora em média 3 minutos para gerar, agora demora 5 segundos...
Selecionar tudo
SELECT MAX(mês_ANO)mês_ANO
,SUM(mês_ATUAL)mês_ATUAL
,MAX(mês_ANT_1)mês_ANT_1
,SUM(TOTAL_ANT_1)TOTAL_ANT_1
,MAX(mês_ANT_2)mês_ANT_2
,SUM(TOTAL_ANT_2)TOTAL_ANT_2
,MAX(mês_ANT_3)mês_ANT_3
,SUM(TOTAL_ANT_3)TOTAL_ANT_3
,MAX(mês_ANT_4)mês_ANT_4
,SUM(TOTAL_ANT_4)TOTAL_ANT_4
,MAX(mês_ANT_5)mês_ANT_5
,SUM(TOTAL_ANT_5)TOTAL_ANT_5
,MAX(mês_ANT_6)mês_ANT_6
,SUM(TOTAL_ANT_6)TOTAL_ANT_6
,MAX(mês_ANT_7)mês_ANT_7
,SUM(TOTAL_ANT_7)TOTAL_ANT_7
,MAX(mês_ANT_8)mês_ANT_8
,SUM(TOTAL_ANT_8)TOTAL_ANT_8
,MAX(mês_ANT_9)mês_ANT_9
,SUM(TOTAL_ANT_9)TOTAL_ANT_9
,MAX(mês_ANT_10)mês_ANT_10
,SUM(TOTAL_ANT_10)TOTAL_ANT_10
,MAX(mês_ANT_11)mês_ANT_11
,SUM(TOTAL_ANT_11)TOTAL_ANT_11
,MAX(mês_ANT_12)mês_ANT_12
,SUM(TOTAL_ANT_12)TOTAL_ANT_12
FROM(
SELECT TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(SYSDATE),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-1)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-3))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-2)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-4))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-3)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-5))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-4)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-6))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-5)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-7))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-6)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-8))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-7)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-9))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-8)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-10))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-9)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_11
,0 TOTAL_ANT_11
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-11))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-10)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_12
,0 TOTAL_ANT_12
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-12))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-11)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
UNION ALL
SELECT '' mês_ANT_0
,0 TOTAL_ANT_0
,'' mês_ANT_1
,0 TOTAL_ANT_1
,'' mês_ANT_2
,0 TOTAL_ANT_2
,'' mês_ANT_3
,0 TOTAL_ANT_3
,'' mês_ANT_4
,0 TOTAL_ANT_4
,'' mês_ANT_5
,0 TOTAL_ANT_5
,'' mês_ANT_6
,0 TOTAL_ANT_6
,'' mês_ANT_7
,0 TOTAL_ANT_7
,'' mês_ANT_8
,0 TOTAL_ANT_8
,'' mês_ANT_9
,0 TOTAL_ANT_9
,'' mês_ANT_10
,0 TOTAL_ANT_10
,'' mês_ANT_11
,0 TOTAL_ANT_11
,TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')mês_ANO
,COUNT(*)mês_ATUAL
,'' mês_ANT_13
,0 TOTAL_ANT_13
FROM DBAMV.ATENDIME
WHERE ATENDIME.cd_multi_empresa = 3
AND ATENDIME.tp_atendimento in ('U','A')
AND ATENDIME.DT_ATENDIMENTO BETWEEN TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-13))+1,'DD/MM/YYYY') AND TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-12)),'DD/MM/YYYY')
GROUP BY TO_CHAR(ATENDIME.DT_ATENDIMENTO,'MM/YYYY')
)