АлександЕР21
11-07-2018, 09:14
select
t1.DDATES,
initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,
((SELECT NULL FROM DUAL)
||'['||
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||']'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233
AND nvl(HOSP_HISTORY_DS,0) = 0 ))
as DAY_TOTAL,
-- НО-1
((SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND=75600447 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||' ('||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447
and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)||')'
) as NO_1_TOTAL
from
table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
order by t1.DDATES
Выкладываю кусок кода т.к весь запрос состоит из 6 кусков кода ,включая вложенные подзапросы.
Запрос выполняется оч.долго, коллеги которые работают в программе с этим отчетом просто вешаются,когда он формируется по 10 минут
Вопрос, как убрать подзапросы или как мне его правильно оптимизировать ?
t1.DDATES,
initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,
((SELECT NULL FROM DUAL)
||'['||
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||']'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233
AND nvl(HOSP_HISTORY_DS,0) = 0 ))
as DAY_TOTAL,
-- НО-1
((SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND=75600447 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||' ('||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447
and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)||')'
) as NO_1_TOTAL
from
table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
order by t1.DDATES
Выкладываю кусок кода т.к весь запрос состоит из 6 кусков кода ,включая вложенные подзапросы.
Запрос выполняется оч.долго, коллеги которые работают в программе с этим отчетом просто вешаются,когда он формируется по 10 минут
Вопрос, как убрать подзапросы или как мне его правильно оптимизировать ?