0
下面的腳本給我一個行表,顯示出一排「manuf_skus」和「distr_skus」(使用「LISTAGG」功能),刪除重複...的Oracle SQL - 從LISTAGG
select
pd.part_no,
pd.catnr,
pd.prodtyp,
pd.packtyp,
pd.description,
ip.purchase_type,
li.cust_catnr categroy,
li.licence_expire,
listagg (nrb.p_catnr, ', ') WITHIN GROUP (ORDER BY nrb.p_catnr) manuf_skus,
listagg (st.selection_no, ', ') WITHIN GROUP (ORDER BY st.selection_no) distr_skus,
nvl(pd.fod_idc, 'N') FOD_IDC,
(select max(acp.qty_free_idc)
from oes_fod_match acp
where pd.part_no = acp.part_no
and acp.type = 'SUP'
and acp.cre_dat = (select max(acp1.cre_dat)
from oes_fod_match acp1
where acp.part_no = acp1.part_no
and acp1.qty_free > 0
and acp1.type = 'SUP')) qty_free_idc,
(select nvl(sum(pl.qty_onhand), 0)
from part_loc pl
where pl.part_no = pd.part_no
and pl.location_type = 'IN') total_stock_comp,
(select nvl(max(pp.qty), 0)
from oes_purpos pp
where pp.av_part_no = pd.part_no
and pp.c_status != 'D'
and pp.datneu = (select max(pp1.datneu)
from oes_purpos pp1
where pp1.av_part_no = pp.av_part_no
and pp1.c_status != 'D')) last_aw_po_qty,
(select nvl(sum(ps.requ_qty - nvl(ps.del_qty, 0)), 0)
from oes_purpos pp,
oes_purseg ps
where ps.headnr = pp.headnr
and ps.posnr = pp.posnr
and pp.av_part_no = pd.part_no
and ps.c_status not in ('9', 'D')
and ps.o_status not in ('D', '9')) open_aw_po_qty,
(select sum(al.qty_required)
from allocations al
where pd.part_no = al.component_part
and al.status_code between '4' and '8') comp_alloc
FROM part_description pd
INNER JOIN inventory_purchase ip
ON ip.part_no = pd.part_no
INNER JOIN scm_prodtyp pt
ON pt.prodtyp = pd.prodtyp
INNER JOIN oes_fod_match acp
ON acp.part_no = pd.part_no
INNER JOIN leos_item li
ON pd.part_no = li.av_part_no
INNER JOIN inventory_purchase ip
ON ip.part_no = pd.part_no
INNER JOIN scm_prodtyp pt
ON pt.prodtyp = pd.prodtyp
INNER JOIN oes_fod_match acp
ON acp.part_no = pd.part_no
INNER JOIN part_description pd3
ON pd3.part_no = pd.part_no
INNER JOIN NCF_COMPPART ncf
ON ncf.item_part_no = pd.part_no
INNER JOIN oes_nrbom nrb
ON ncf.catnr = nrb.c_catnr
AND ncf.prodtyp = nrb.c_prodtyp
AND ncf.packtyp = nrb.c_packtyp
AND ncf.vernr = nrb.c_vernr
INNER JOIN part_description pd2
ON nrb.p_catnr = pd2.catnr
AND nrb.p_prodtyp = pd2.prodtyp
AND nrb.p_packtyp = pd2.packtyp
LEFT OUTER JOIN [email protected]_to_cdsuk st
ON 9||nrb.p_catnr = st.selection_no
WHERE pd.cunr in ('649830', 'W30000')
and pd.catnr = '2EDVD0017'
and pd.fod_idc = 'Y'
and pt.prodgrp = 'AW'
GROUP BY
pd.part_no,
pd.catnr,
pd.prodtyp,
pd.packtyp,
pd.description,
ip.purchase_type,
li.cust_catnr,
li.licence_expire,
pd.fod_idc
什麼我想補充的是下面的子查詢...
(select sum(ds.planqty - nvl(ds.delqty, 0))
from oes_opos op,
oes_oposdelseg ds
where ds.ordnr = op.ordnr
and ds.posnr = op.posnr
and op.catnr = nrb.p_catnr
and op.prodtyp = nrb.p_prodtyp
and op.packtyp = nrb.p_packtyp
and ds.c_status not in ('9', 'D')
and op.ol_typ = 'XX'
group by
pd.catnr, nrb.catnr, nrb.prodtyp, nrb.packtyp) open_manuf_qty
...使這項工作我要補充以下GROUP BY的
nrb.p_catnr,
nrb.p_prodtyp,
nrb.p_packtyp
但是,當我添加這個子查詢時,'manuf_skus'和'distr_skus'不再在一行中。我想這是因爲我不得不添加額外的組。有沒有添加這個sum子查詢,仍然保持一行?
感謝 所有
是其他行從列除了重複「MANUF_SKUS和‘DISTR_SKUS’......我想DISTINCT但不幸的是我得到相同的「重複」行。 – SMORF 2014-11-03 13:51:28