1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
with TMP_PROD_FG as
(
select to_date('08312010','MMDDYYYY') w_date,1 w_item,3 w_parent_mfg,0.5 w_UNIT_QTY_USED,5 W_PARENT_QTY_UOM2,'PURCHASE' W_SOURCING_TYPE from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),2,3,1,10,'PURCHASE' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),7,5,0.25,50,'PURCHASE' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),3,4,2,20,'PRODUCTION' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),5,4,1,5,'PRODUCTION' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),6,4,0.5,10,'PURCHASE' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),4,9,3,50,'PRODUCTION' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),10,9,2.5,50,'PURCHASE' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),6,11,1,100,'PURCHASE' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),3,11,0.5,100,'PRODUCTION' from DUAL UNION ALL
select to_date('08312010','MMDDYYYY'),10,11,1.5,100,'PURCHASE' from DUAL
),
table_test as
(
SELECT T.W_DATE
,T.W_ORIG_RM
, (SUM (T.W_UNIT_QTY_USED_FINAL) * T.W_PARENT_QTY_UOM2) "W_QTY_USED"
,T.W_PARENT_MFG
,T.W_PARENT_QTY_UOM2
,T.W_LVL
,T.W_LEAF
,T.W_UNIT_QTY_USED
,T.EXPR
,T.CHAINE
FROM (SELECT CONNECT_BY_ROOT (T2.W_ITEM) "W_ORIG_RM"
,T2.W_DATE
,T2.W_PARENT_MFG
,T2.W_PARENT_QTY_UOM2
,F_CALCULATION (SUBSTR (SYS_CONNECT_BY_PATH (T2.W_UNIT_QTY_USED, '*'), 2))
"W_UNIT_QTY_USED_FINAL"
,LEVEL "W_LVL"
,CONNECT_BY_ISLEAF "W_LEAF"
,SUBSTR (SYS_CONNECT_BY_PATH (T2.W_UNIT_QTY_USED, '*'), 2) EXPR
,SUBSTR (SYS_CONNECT_BY_PATH (T2.W_ITEM, ' / '), 2) || ' / ' || T2.W_PARENT_MFG CHAINE
,T2.W_UNIT_QTY_USED
FROM TMP_PROD_FG T2
START WITH T2.W_SOURCING_TYPE = 'PURCHASE'
CONNECT BY NOCYCLE PRIOR T2.W_DATE = T2.W_DATE
AND PRIOR T2.W_PARENT_MFG = T2.W_ITEM
AND T2.W_SOURCING_TYPE <> 'PURCHASE'
) T
GROUP BY T.W_DATE
,T.W_ORIG_RM
,T.W_PARENT_MFG
,T.W_PARENT_QTY_UOM2
,T.W_LVL
,T.W_LEAF
,t.EXPR
,T.CHAINE
,T.W_UNIT_QTY_USED
order by w_leaf desc , w_parent_mfg, chaine
)
select p.*
, EXP (SUM (LN (c.w_unit_qty_used )))*p.w_parent_qty_uom2 calc_test, P.w_qty_used Ctrl
from table_test p
inner join table_test c on
instr( p.chaine,c.chaine )=1
group by
P.W_DATE
,P.W_ORIG_RM
,p.W_QTY_USED
,P.W_PARENT_MFG
,P.W_PARENT_QTY_UOM2
,P.W_LVL
,P.W_LEAF
,P.W_UNIT_QTY_USED
,P.EXPR
,P.CHAINE
order by p.w_leaf desc , p.w_parent_mfg, p.chaine |
Partager