ПРИМЕЧАНИЕ. Обновление общего вопроса с образцами данных и вывода.
Мне нужно обновить некоторые столбцы, сравнив их из другой таблицы, и обновить столбцы в процентном отношении. Итак, здесь я go.
, прежде всего, запрос на получение утвержденной длины CMM находится ниже с другими столбцами, которые мне нужны
select CIRCLE,regexp_substr(MP,'[^/]+',1,1)MPNAME,regexp_substr(MP,'[^/]+',1,2)MPCODE,
SPAN_TYPE,SPAN_LINK_ID,NE_LENGTH AS NE_LEN,
ROUTE_APPROVED_BY_CMM as CMM_APPROVED_LENGTH from
TBL_FIBER_INV_CMP_REPORT_MV
where CMM_APPROVED_DATE IS NOT NULL OR ROUTE_APPROVED_BY_CMM > 0 OR
JOB_PROGRESS_FLAG = 1;
, и вывод приведенный выше запрос выглядит следующим образом:
[! [введите описание изображения здесь] [1]] [1]
Теперь идет вторая часть, которая вычисляет процентное соотношение соотношение
СЛУЧАЙ 1: Если утвержденная длина КИМ на изображении выше составляет 70 км, а длина NE от (NE, UG, AR len от NE.MV_SPAN@DB_LINK_NE_VIEWER
) оказывается равной 100 км, тогда разделите (UG=80Km and AR=20Km)
Тогда процент бифуркации будет 80% UG_length и 20% AR_length . Таким образом, вместо 70 км утвержденного километра CMM, TBL_FIBER_INV_SIGN_OFF_SHEET
должно обновить столбец как UG = 56Km
и AR = 14Km
. бифуркация должна быть обновлена в таблице ниже TBL_FIBER_INV_SIGN_OFF_SHEET
, а данные образца таблицы выглядят следующим образом: -
[! [введите здесь описание изображения] [2]] [2]
ВАРИАНТ 2: ЕСЛИ CMM approved length
и NE length
одинаковы. например: 70 км (UG = 60 км и AR = 10 км), тогда в таблице TBL_FIBER_INV_SIGN_OFF_SHEET
должно быть обновлено значение UG = 60Km and AR = 10Km
.
Ниже приведено описание обеих таблиц.
CREATE OR REPLACE PROCEDURE UPD_UG_AR_BY_CMM AS
BEGIN
for cur_r in (
select circle,
regexp_substr(MP,'[^/]+',1,1)MAINTENANCE_ZONE_NAME,
regexp_substr(MP,'[^/]+',1,2)MAINTENANCE_ZONE_CODE,
SPAN_TYPE,
SPAN_LINK_ID,
NE_LENGTH,
ROUTE_APPROVED_BY_CMM
from TBL_FIBER_INV_CMP_REPORT_MV
where CMM_APPROVED_DATE IS NOT NULL
OR ROUTE_APPROVED_BY_CMM > 0
OR JOB_PROGRESS_FLAG = 1
)
LOOP
IF cur_r.ROUTE_APPROVED_BY_CMM > SELECT ROUND(SUM(NVL(CALCULATED_LENGTH,0)/1000),4) AS NE_LENGTH,
ROUND(SUM(CASE WHEN RJ_CONSTRUCTION_METHODOLOGY NOT LIKE '%AERIAL%' OR RJ_CONSTRUCTION_METHODOLOGY IS NULL THEN NVL(CALCULATED_LENGTH,0) ELSE 0 END)/1000,4) AS UG_LENGTH
,ROUND(SUM(CASE WHEN RJ_CONSTRUCTION_METHODOLOGY LIKE '%AERIAL%' THEN NVL(CALCULATED_LENGTH,0) ELSE 0 END)/1000,4) AS AR_LENGTH
FROM NE.MV_SPAN@DB_LINK_NE_VIEWER
THEN
BEGIN
UPDATE TBL_FIBER_INV_SIGN_OFF_SHEET
SET FSA_UG = UG_LENGTH, --- divide 80% of NE_LENGTH
FSA_AERIAL = AR_LENGTH --- divide 20% of NE_LENGTH
WHERE CUR_R.SPAN_LINK_ID = RJ_SPAN_ID
END
NULL;
END UPD_UG_AR_BY_CMM;
, но я застрял в вычислении процентного соотношения.