Professional Documents
Culture Documents
MTYCTD QT01 14125 SLGBTD FW1 To FW2
MTYCTD QT01 14125 SLGBTD FW1 To FW2
TI LIU M T YU CU
THAY I NNG CP
M hiu d n: QT01_14125_SLGBTD
M hiu ti liu: MTYCTD_ QT01_14125_SLGBTD
H Ni, 06/2015
*A To mi, M Sa i, D Xa b
Ngy
thay i
V tr
A*
thay i M, D
Ngun gc
M t thay i
Ghi ch
mi
KH
09/07/20
15
BM_QT05_MTYCTD
Biu
phng
kinh
doanh
2/
MC LC
1.1
1.2
1.2.1
Tnh cn thit...............................................................................................................5
1.2.2
Gi tr mang li...........................................................................................................5
1.3
1.3.1
1.3.2
1.3.3
M t thay i v CSDL..............................................................................................8
BM_QT05_MTYCTD
3/
TRANG K
Ngi lp:
Nguyn B Xun
09/07/2015
<Ngy>
<Ngy>
Ngi ph duyt:
Bi Trng Vinh
09/06/2015
QTDA
BM_QT05_MTYCTD
4/
1.1
Ngun gc thay i
Chuyn i biu t FW 1.0 sang FW 2.0.
1.2
1.2.1
Tnh cn thit
1.2.2
Gi tr mang li
1.3
Ni dung thay i
1.3.1
M t chung yu cu thay i
-
Biu mu:
Biu mu:
BM_QT05_MTYCTD
5/
Biu mu:
Biu mu:
BM_QT05_MTYCTD
6/
5. Biu % TT tch ly
-
1.3.2
Biu mu:
Nghip v v biu :
o D liu s c lm trn 2 ch s. D liu % lm trn 1 ch s. D liu nul v
0 th khng v.
o KH 2015: D liu c chia lm 2 khong ly d liu nh sau:
BM_QT05_MTYCTD
7/
Delta 2014: D liu thc hin 2014 2013: Trng ly d liu: TH_N_1
BM_QT05_MTYCTD
8/
o Delta 2013: D liu thc hin 2013 2012: Trng ly d liu: TH_N_2
Nghip v v biu :
o D liu % lm trn 1 ch s. D liu nul v 0 th khng v.
o KH 2015: D liu c chia lm 2 khong ly d liu nh sau:
Nghip v v biu :
o D liu s c lm trn 2 ch s. D liu % lm trn 1 ch s. D liu nul v
0 th khng v.
o KH 2015: D liu c chia lm 2 khong ly d liu nh sau:
BM_QT05_MTYCTD
9/
th_n_1
5. Biu % TT tch ly
Biu th hin % tng trng tch ly thng . Vi d liu u vo l ngy tng hp d
liu v n v mun xem d liu.
-
Nghip v v biu :
o D liu % lm trn 1 ch s. D liu nul v 0 th khng v.
o KH 2015: D liu c chia lm 2 khong ly d liu nh sau:
1.3.2.2 Protype
1.
Cu lnh ly d liu:
BM_QT05_MTYCTD
10/
SELECT
prd_id,
month || '/' || year month,
month thang,
year,
dep_pk,
CASE
WHEN th_thang_trong_nam != 0 AND th_thang_trong_nam IS NOT NULL
THEN
th_thang_trong_nam / rate_unit_week
ELSE
NULL
END
th_n,
CASE
WHEN th_n_1 != 0 AND th_n_1 IS NOT NULL
THEN
th_n_1 / rate_unit_week
ELSE
NULL
END
th_n_1,
CASE
WHEN th_n_1_ck != 0 AND th_n_1_ck IS NOT NULL
THEN
th_n_1_ck / rate_unit_week
ELSE
NULL
END
th_n_1_ck,
CASE
WHEN th_n_1_ck_chot != 0 AND th_n_1_ck_chot IS NOT NULL
THEN
th_n_1_ck_chot / rate_unit_week
ELSE
NULL
END
th_n_1_ck_chot,
CASE
WHEN month <= TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'), 'MM')
THEN
CASE
WHEN f_schedule_n != 0 AND f_schedule_n IS NOT NULL
THEN
f_schedule_n / rate_unit_week
ELSE
NULL
END
ELSE
CASE
WHEN f_schedule_n_fix != 0
AND f_schedule_n_fix IS NOT NULL
THEN
f_schedule_n_fix / rate_unit_week
ELSE
NULL
END
END
khdv_n,
CASE
WHEN f_schedule_n_fix != 0 AND f_schedule_n_fix IS NOT NULL
THEN
f_schedule_n_fix / rate_unit_week
ELSE
NULL
END
khpb_n,
CASE
WHEN f_schedule_n_1 != 0 AND f_schedule_n_1 IS NOT NULL
THEN
f_schedule_n_1 / rate_unit_week
ELSE
NULL
END
khdv_n_1,
CASE
WHEN f_value_n_2 != 0 AND f_value_n_2 IS NOT NULL
THEN
BM_QT05_MTYCTD
11/
f_value_n_2 / rate_unit_week
ELSE
NULL
END
th_n_2,
CASE
WHEN f_value_n_3 != 0 AND f_value_n_3 IS NOT NULL
THEN
f_value_n_3 / rate_unit_week
ELSE
NULL
END
th_n_3,
CASE
WHEN
f_schedule_n_fix != 0
AND f_schedule_n_fix IS NOT NULL
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
CASE
WHEN th_n_1 < 0
THEN
100 * (f_schedule_n_fix - th_n_1) / ABS (th_n_1)
ELSE
100 * ( (f_schedule_n_fix / th_n_1) - 1)
END
ELSE
NULL
END
tt_khpb,
CASE
WHEN month <= TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'), 'MM')
THEN
CASE
WHEN
f_schedule_n != 0
AND f_schedule_n IS NOT NULL
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
CASE
WHEN th_n_1 < 0
THEN
100
* (f_schedule_n - th_n_1)
/ ABS (th_n_1)
ELSE
100 * ( (f_schedule_n / th_n_1) - 1)
END
ELSE
NULL
END
else
CASE
WHEN
f_schedule_n_fix != 0
AND f_schedule_n_fix IS NOT NULL
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
CASE
WHEN th_n_1 < 0
THEN
100 * (f_schedule_n_fix - th_n_1) / ABS (th_n_1)
ELSE
100 * ( (f_schedule_n_fix / th_n_1) - 1)
END
ELSE
NULL
END
end
tt_khdv,
CASE
WHEN
th_thang_trong_nam != 0
AND th_thang_trong_nam IS NOT NULL
AND th_n_1_ck != 0
AND th_n_1_ck IS NOT NULL
THEN
CASE
BM_QT05_MTYCTD
12/
BM_QT05_MTYCTD
13/
FROM
BM_QT05_MTYCTD
th_n_1_ck_chot,
1000 * rep.f_value_ck th_n_1_ck,
CASE
WHEN rep.thang <=
TO_CHAR (
ADD_MONTHS (
TRUNC (
TO_DATE ('20150708', 'yyyyMMdd'),
'Q'),
2),
'MM')
THEN
CASE
WHEN cs_n.is_view = 1 AND cs_n.f_schedule != 0
THEN
1000 * cs_n.f_schedule
ELSE
1000 * rep.f_schedule_n_month
END
ELSE
NULL
END
f_schedule_n,
CASE
WHEN cs_n_1.is_view = 1 AND cs_n_1.f_schedule != 0
THEN
1000 * cs_n_1.f_schedule
ELSE
1000 * rep.f_schedule_n_1_month
END
f_schedule_n_1,
CASE
WHEN cs_n_2.is_view = 1 AND cs_n_2.f_value != 0
THEN
1000 * cs_n_2.f_value
ELSE
1000 * rep.f_value_n_2
END
f_value_n_2,
rep.rate_unit rate_unit_week,
rep.unit unit_week,
1000 * rep.f_value_n_3 f_value_n_3,
1000 * rep.f_schedule_n_fix f_schedule_n_fix
htd_chart_thang_nam rep
LEFT JOIN
htd_chart_thang_nam_agg cs_n
ON
cs_n.prd_id = rep.nam || rep.thang || '01'
AND cs_n.dep_code = rep.dep_code_pk
AND DECODE (cs_n.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_thang_nam_agg cs_n_1
ON cs_n_1.prd_id = (rep.nam - 1) || rep.thang || '01'
14/
WHERE
ORDER BY
thang
Cu lnh ly d liu:
SELECT
BM_QT05_MTYCTD
15/
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
CASE
WHEN (th_n - th_n_1_ck)>=0 and (f_schedule_n - th_n_1)>=0
and ((f_schedule_n - th_n_1)-(th_n - th_n_1_ck))>0
then
((f_schedule_n - th_n_1)-(th_n - th_n_1_ck)) /
rate_unit_week
else
CASE
WHEN (th_n - th_n_1_ck)<0 and (f_schedule_n th_n_1)>0
then
(f_schedule_n - th_n_1) / rate_unit_week
else
CASE
WHEN (th_n - th_n_1_ck)<0 and
(f_schedule_n - th_n_1) <0 and ((f_schedule_n - th_n_1)-(th_n - th_n_1_ck)) <0
then
((f_schedule_n - th_n_1)-(th_n th_n_1_ck))/ rate_unit_week
else
null
end
end
end
ELSE
NULL
END
ELSE
NULL
END
delta_khn,
CASE
WHEN
th_n_1 != 0
AND th_n_1 IS NOT NULL
AND th_n_2 != 0
AND th_n_2 IS NOT NULL
THEN
(th_n_1 - th_n_2) / rate_unit_week
ELSE
NULL
END
th_n_1,
CASE
WHEN
th_n_3 != 0
AND th_n_3 IS NOT NULL
AND th_n_2 != 0
AND th_n_2 IS NOT NULL
THEN
(th_n_2 - th_n_3) / rate_unit_week
ELSE
NULL
END
th_n_2,
unit_week unit
FROM
(SELECT
rep.prd_id,
rep.thang month,
rep.nam year,
rep.dep_code_pk dep_pk,
CASE
WHEN rep.thang <= TO_CHAR (TO_DATE ('20150630', 'yyyyMMdd'),'MM')
THEN
CASE
WHEN cs_n.is_view = 1 AND cs_n.f_value != 0
THEN
1000 * cs_n.f_value
ELSE
1000 * rep.f_value_n
END
ELSE
NULL
END
th_n,
CASE
WHEN cs_n_1.is_view = 1 AND cs_n_1.f_value != 0
BM_QT05_MTYCTD
16/
THEN
1000 * cs_n_1.f_value
ELSE
1000 * rep.f_value_n_1
END
FROM
WHERE
th_n_1,
1000 * rep.f_value_ck th_n_1_ck,
CASE
WHEN cs_n.is_view = 1 AND cs_n.f_schedule != 0
THEN
1000 * cs_n.f_schedule
ELSE
1000 * rep.f_schedule_n_month
END
f_schedule_n,
CASE
WHEN cs_n_1.is_view = 1 AND cs_n_1.f_schedule != 0
THEN
1000 * cs_n_1.f_schedule
ELSE
1000 * rep.f_schedule_n_1_month
END
f_schedule_n_1,
CASE
WHEN cs_n_2.is_view = 1 AND cs_n_2.f_value != 0
THEN
1000 * cs_n_2.f_value
ELSE
1000 * rep.f_value_n_2
END
th_n_2,
CASE
WHEN rep.unit = 'nghin_ty' THEN 1000
ELSE rep.rate_unit
END
rate_unit_week,
1000 * rep.f_value_n_3 th_n_3,
DECODE (rep.unit, 'nghin_ty', 'ty', rep.unit) unit_week
htd_chart_thang_nam rep
LEFT JOIN
htd_chart_thang_nam_agg cs_n
ON
cs_n.prd_id = rep.nam || rep.thang || '01'
AND cs_n.dep_code = rep.dep_code_pk
AND DECODE (cs_n.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_thang_nam_agg cs_n_1
ON cs_n_1.prd_id = (rep.nam - 1) || rep.thang || '01'
AND cs_n_1.dep_code = rep.dep_code_pk
AND DECODE (cs_n_1.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_thang_nam_agg cs_n_2
ON
cs_n_2.prd_id = (rep.nam - 2) || rep.thang || '01'
AND cs_n_2.dep_code = rep.dep_code_pk
AND DECODE (cs_n_2.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
rep.level1 = 'DTDV'
AND rep.dep_code_pk = 'TD'
AND rep.prd_id = TO_CHAR (TO_DATE ('20150630', 'yyyyMMdd'), 'YYYYMMDD'))
order by thang;
BM_QT05_MTYCTD
17/
Cu lnh ly d liu:
SELECT
prd_id,
month month, month thang,
year,
dep_pk,
CASE
WHEN
f_schedule_n_fix != 0
AND f_schedule_n_fix IS NOT NULL
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
(f_schedule_n_fix - th_n_1) / rate_unit_week
ELSE
NULL
END
khpb_n,
CASE
WHEN month <= TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'), 'MM')
THEN
CASE
WHEN
f_schedule_n != 0
AND f_schedule_n IS NOT NULL
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
(f_schedule_n - th_n_1) / rate_unit_week
ELSE
NULL
END
ELSE
CASE
WHEN
f_schedule_n_fix != 0
AND f_schedule_n_fix IS NOT NULL
AND th_n_1 != 0
AND th_n_1 IS NOT NULL
THEN
(f_schedule_n_fix - th_n_1) / rate_unit_week
ELSE
NULL
END
END
khdv_n,
CASE
WHEN
th_thang_trong_nam != 0
AND th_thang_trong_nam IS NOT NULL
AND th_n_1_ck != 0
AND th_n_1_ck IS NOT NULL
THEN
(th_thang_trong_nam - th_n_1_ck) / rate_unit_week
ELSE
NULL
END
th_n,
CASE
WHEN
th_n_1 != 0
AND th_n_1 IS NOT NULL
AND th_n_2 != 0
AND th_n_2 IS NOT NULL
THEN
(th_n_1 - th_n_2) / rate_unit_week
ELSE
NULL
END
th_n_1,
CASE
WHEN
th_n_2 != 0
AND th_n_2 IS NOT NULL
AND th_n_3 != 0
AND th_n_3 IS NOT NULL
THEN
BM_QT05_MTYCTD
18/
BM_QT05_MTYCTD
19/
END
ELSE
NULL
END
tt_thn,
CASE
WHEN
th_n_1 != 0
AND th_n_1 IS NOT NULL
AND th_n_2 != 0
AND th_n_2 IS NOT NULL
THEN
CASE
WHEN th_n_2 < 0
THEN
100 * (th_n_1 - th_n_2) / ABS (th_n_2)
ELSE
100 * ((th_n_1 / th_n_2) - 1)
END
ELSE
NULL
END
tt_thn1,
CASE
WHEN
th_n_2 != 0
AND th_n_2 IS NOT NULL
AND th_n_3 != 0
AND th_n_3 IS NOT NULL
THEN
CASE
WHEN th_n_3 < 0
THEN
100 * (th_n_2 - th_n_3) / ABS (th_n_3)
ELSE
100 * ((th_n_2 / th_n_3) - 1)
END
ELSE
NULL
END
tt_thn2,
unit_week unit
FROM
(SELECT
rep.prd_id,
rep.thang month,
rep.nam year,
rep.dep_code_pk dep_pk,
CASE
WHEN rep.thang <TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'), 'MM') or
(rep.thang =TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'), 'MM') and TO_CHAR (TO_DATE
('20150708', 'yyyyMMdd'), 'dd')>=15 )
THEN
CASE
WHEN cs_n.is_view = 1 AND cs_n.f_value != 0
AND rep.thang !=
TO_CHAR (
TO_DATE ('20150708', 'yyyyMMdd'),
'MM')
THEN
1000 * cs_n.f_value
ELSE
1000 * rep.f_value_n
END
ELSE
NULL
END
th_thang_trong_nam,
CASE
WHEN cs_n_1.is_view = 1 AND cs_n_1.f_value != 0
THEN
1000 * cs_n_1.f_value
ELSE
1000 * rep.f_value_n_1
END
th_n_1,
1000 * rep.f_value_ck th_n_1_ck,
CASE
WHEN cs_n_2.is_view = 1 AND cs_n_2.f_value != 0
THEN
1000 * cs_n_2.f_value
BM_QT05_MTYCTD
20/
ELSE
1000 * rep.f_value_n_2
END
th_n_2,
CASE
WHEN rep.thang <=
TO_CHAR (
ADD_MONTHS (
TRUNC (
TO_DATE ('20150708', 'yyyyMMdd'),
'Q'),
2),
'MM')
THEN
CASE
WHEN cs_n.is_view = 1 AND cs_n.f_schedule != 0
THEN
1000 * cs_n.f_schedule
ELSE
1000 * rep.f_schedule_n_month
END
ELSE
NULL
END
f_schedule_n,
CASE
WHEN cs_n_1.is_view = 1 AND cs_n_1.f_schedule != 0
THEN
1000 * cs_n_1.f_schedule
ELSE
1000 * rep.f_schedule_n_1_month
END
f_schedule_n_1,
CASE
WHEN cs_n_2.is_view = 1 AND cs_n_2.f_schedule != 0
THEN
1000 * cs_n_2.f_schedule
ELSE
1000 * rep.f_schedule_n_2_month
END
f_schedule_n_2,
rep2.rate_unit rate_unit_week,
rep2.unit unit_week,
CASE
WHEN rep2.thang <=
TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'),
'MM')
THEN
CASE
WHEN cs_th_n.is_view = 1
AND cs_th_n.f_value != 0
THEN
1000 * cs_th_n.f_value
ELSE
1000 * rep2.f_value_n
END
ELSE
NULL
END
rep2_th_n,
CASE
WHEN cs_th_n.is_view = 1 AND cs_th_n.f_schedule != 0
THEN
1000 * cs_th_n.f_schedule
ELSE
1000 * rep2.f_schedule_n_month
END
rep2_f_schedule_n,
CASE
WHEN cs_th_n_1.is_view = 1
AND cs_th_n_1.f_schedule != 0
THEN
1000 * cs_th_n_1.f_schedule
ELSE
1000 * rep2.f_schedule_n_1_month
END
rep2_f_schedule_n_1,
BM_QT05_MTYCTD
21/
FROM
BM_QT05_MTYCTD
CASE
WHEN cs_th_n_1.is_view = 1 AND cs_th_n_1.f_value != 0
THEN
1000 * cs_th_n_1.f_value
ELSE
1000 * rep2.f_value_n_1
END
rep2_th_n_1,
CASE
WHEN cs_th_n_2.is_view = 1 AND cs_th_n_2.f_value != 0
THEN
1000 * cs_th_n_2.f_value
ELSE
1000 * rep2.f_value_n_2
END
rep2_th_n_2,
1000 * rep2.f_value_ck rep2_f_value_ck,
1000 * rep.f_value_n_3 th_n_3,
1000 * rep.f_schedule_n_fix f_schedule_n_fix
htd_chart_thang_nam_delta rep
LEFT JOIN
htd_chart_thang_nam rep2
ON rep.prd_id = rep2.prd_id
AND rep.level1 = rep2.level1
AND rep.dep_code_pk =
rep2.dep_code_pk
AND rep.thang = rep2.thang
LEFT JOIN
htd_chart_delta_agg cs_n
ON cs_n.prd_id =
rep.nam || rep.thang || '01'
AND cs_n.dep_code = rep.dep_code_pk
AND DECODE (cs_n.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_delta_agg cs_n_1
ON cs_n_1.prd_id =
(rep.nam - 1) || rep.thang || '01'
AND cs_n_1.dep_code = rep.dep_code_pk
AND DECODE (cs_n_1.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_delta_agg cs_n_2
ON cs_n_2.prd_id =
(rep.nam - 2) || rep.thang || '01'
AND cs_n_2.dep_code = rep.dep_code_pk
AND DECODE (cs_n_2.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_thang_nam_agg cs_th_n
ON cs_th_n.prd_id = rep.nam || rep.thang || '01'
AND cs_th_n.dep_code = rep.dep_code_pk
AND DECODE (cs_th_n.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
LEFT JOIN
htd_chart_thang_nam_agg cs_th_n_1
ON cs_th_n_1.prd_id =
(rep.nam - 1) || rep.thang || '01'
AND cs_th_n_1.dep_code = rep.dep_code_pk
AND DECODE (cs_th_n_1.service_pk,
'19', 'DTTD',
22/
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
WHERE
LEFT JOIN
htd_chart_thang_nam_agg cs_th_n_2
ON cs_th_n_2.prd_id = (rep.nam - 2) || rep.thang || '01'
AND cs_th_n_2.dep_code = rep.dep_code_pk
AND DECODE (cs_th_n_2.service_pk,
'19', 'DTTD',
'143', 'DTDV',
'2000', 'LNTT',
'2001', 'LNST',
'DTTD') = rep.level1
rep.level1 = 'DTDV' AND rep.dep_code_pk = 'TD'
AND rep.prd_id =
TO_CHAR (TO_DATE ('20150708', 'yyyyMMdd'),
'YYYYMMDD')) ORDER BY thang
5. Biu % TT tch ly
o Cu lnh ly d liu: Dng cu lnh biu 4
1. M t thay i v CSDL
1.3.3
1.4
1.4.1
iu kin m bo
iu kin m bo cn khch hng m bo
Khng yu cu iu kin m bo
1.4.2
iu kin m bo cn bn th 3 m bo
Khng yu cu iu kin m bo
1.4.3
BM_QT05_MTYCTD
23/