完成了一条这辈子写过最长的SQL语句

select 
a.*,
decode(z211.箱数, '',  0, z211.箱数) as z211箱数,
decode(z211.单价, '',  0, z211.单价) as z211单价,
decode(z211.总运价, '',  0, z211.总运价) as z211总运价, 
decode(z212.箱数, '',  0,z212.箱数)  as z212箱数, 
decode(z212.单价, '',  0, z212.单价) as z212单价,
decode(z212.总运价, '',  0, z212.总运价) as z212总运价 , 
decode(z211.箱数, '',  0, z211.箱数)  +   decode(z212.箱数, '',  0,z212.箱数)  as 合计箱数,
decode(z211.总运价, '',  0, z211.总运价) + decode(z212.总运价, '',  0, z212.总运价) as 合计数字,
chinese_number_program(decode(z211.总运价, '',  0, z211.总运价) + decode(z212.总运价, '',  0, z212.总运价)) as 合计 
from 
(select
CH.wave_nbr as 波次号,
CH.TC_order_id as 配送订单号,
CH.tc_shipment_id as 派车单,
ph.DISTRO_NUMBER as 外向交货单,
decode(PH.BILL_TO_ADDRESS_1, '',  nvl(ADC. FIRST_NAME, ADC.SURNAME), PH.BILL_TO_ADDRESS_1) as 联系人,
decode(PH.BILL_TO_ADDRESS_2, null, ADC.TELEPHONE_NUMBER || ADC.MOBIL_PHONE_NUMBER, PH.BILL_TO_ADDRESS_2) as 联系方式,
decode(PH.MARK_FOR, '', ad.address_1, PH.MARK_FOR) as 门店地址,
listagg(oli. REF_FIELD6,',') within GROUP (order by oli. REF_FIELD6) over (partition by CH.TC_order_id) 备注,
bp.company_description as 承运商,
bp.company_name as 承运商编号,
bp.contact_telephone_number as 承运商电话
from
lpn ch
right JOIN orders ph
ON PH. TC_ORDER_ID = CH. TC_ORDER_ID
 Inner Join LPN_DETAIL cd On ch.LPN_ID = cd.LPN_ID
 Inner Join ITEM_CBO im On cd.ITEM_ID = im.item_id
 inner join ORDER_LINE_ITEM oli on im.item_name = oli.item_name and oli.ORDER_ID=CH.ORDER_ID
 left join Company bp on PH.ref_field_4 = bp.company_name
 inner JOIN FACILITY AD  ON AD.FACILITY_ID = PH.D_FACILITY_ID
 left JOIN FACILITY_CONTACT ADC ON AD. FACILITY_ID = ADC. FACILITY_ID
 left join facility_note fn on AD.FACILITY_ID = fn.FACILITY_ID and oli.ref_field2 = substr(fn.note, 0, 4)
where CH.INBOUND_OUTBOUND_INDICATOR = 'O'
 and CH.LPN_FACILITY_STATUS <> 99
$P!{CH_TC_order_id}
$P!{bp_company_name} 
$P!{CH_tc_shipment_id} 
$P!{ch_wave_nbr}
group by 
ch.wave_nbr,
ph.DISTRO_NUMBER,
CH.TC_order_id,
bp.company_description,
bp.company_name,
bp.contact_telephone_number,
oli.REF_FIELD6,
PH.MARK_FOR,
ch.tc_shipment_id,
ad.address_1,
PH.MARK_FOR,
PH.BILL_TO_ADDRESS_1,
ADC. FIRST_NAME,
ADC.SURNAME,
ADC.TELEPHONE_NUMBER,
ADC.MOBIL_PHONE_NUMBER,
PH.BILL_TO_ADDRESS_2) a
left join 
(select
CH.TC_order_id as 配送订单号,
COUNT(DISTINCT CH.TC_LPN_ID) as 箱数,
substr(fn.note, instr(fn.note, ',', -1) + 1) as 单价,
substr(fn.note, instr(fn.note, ',', -1) + 1) * COUNT(DISTINCT CH.TC_LPN_ID) AS 总运价
from
lpn ch
right JOIN orders ph
ON PH. TC_ORDER_ID = CH. TC_ORDER_ID
 Inner Join LPN_DETAIL cd On ch.LPN_ID = cd.LPN_ID
 Inner Join ITEM_CBO im On cd.ITEM_ID = im.item_id
 inner join ORDER_LINE_ITEM oli on im.item_name = oli.item_name and oli.ORDER_ID=CH.ORDER_ID
 inner JOIN FACILITY AD  ON AD.FACILITY_ID = PH.D_FACILITY_ID
 left JOIN FACILITY_CONTACT ADC ON AD. FACILITY_ID = ADC. FACILITY_ID
 left join facility_note fn on AD.FACILITY_ID = fn.FACILITY_ID and oli.ref_field2 = substr(fn.note, 0, 4)
where CH.INBOUND_OUTBOUND_INDICATOR = 'O'
 and CH.LPN_FACILITY_STATUS <> 99
 and oli.Ref_Field2='Z211'
group by 
CH.TC_order_id,
fn.note
) z211
on 
a.配送订单号=z211.配送订单号
left join 
(select
CH.TC_order_id as 配送订单号,
COUNT(DISTINCT CH.TC_LPN_ID) as 箱数,
substr(fn.note, instr(fn.note, ',', -1) + 1) as 单价,
substr(fn.note, instr(fn.note, ',', -1) + 1) * COUNT(DISTINCT CH.TC_LPN_ID) AS 总运价
from
lpn ch
right JOIN orders ph
ON PH. TC_ORDER_ID = CH. TC_ORDER_ID
 Inner Join LPN_DETAIL cd On ch.LPN_ID = cd.LPN_ID
 Inner Join ITEM_CBO im On cd.ITEM_ID = im.item_id
 inner join ORDER_LINE_ITEM oli on im.item_name = oli.item_name and oli.ORDER_ID=CH.ORDER_ID
 inner JOIN FACILITY AD  ON AD.FACILITY_ID = PH.D_FACILITY_ID
 left JOIN FACILITY_CONTACT ADC ON AD. FACILITY_ID = ADC. FACILITY_ID
 left join facility_note fn on AD.FACILITY_ID = fn.FACILITY_ID and oli.ref_field2 = substr(fn.note, 0, 4)
where CH.INBOUND_OUTBOUND_INDICATOR = 'O'
 and CH.LPN_FACILITY_STATUS <> 99
 and oli.Ref_Field2='Z212'
group by 
CH.TC_order_id,
fn.note) z212
on 
a.配送订单号=z212.配送订单号
group by 
a.波次号,
a.配送订单号,
a.派车单,
a.外向交货单,
a.联系人,
a.联系方式,
a.门店地址,
a.备注,
a.承运商,
a.承运商编号,
a.承运商电话,
decode(z211.箱数, '',  0, z211.箱数),
decode(z211.单价, '',  0, z211.单价),
decode(z211.总运价, '',  0, z211.总运价), 
decode(z212.箱数, '',  0,z212.箱数), 
decode(z212.单价, '',  0, z212.单价),
decode(z212.总运价, '',  0, z212.总运价)

花了2天的时间才把这个语句调通,这辈子都没写过这么长的语句,脑壳疼

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索
«   2019年11月   »
123
45678910
11121314151617
18192021222324
252627282930
最新留言
    标签列表

      Powered By Z-BlogPHP 1.5.2 Zero