CREATE OR REPLACE VIEW v_suanzhangjingying AS -- 采购销售合同关联表 WITH sopo_check as (SELECT DISTINCT sc."fno", sd."pono" FROM "salesContract" sc LEFT JOIN "salesDtl" sd ON sc."id" = sd."rrid" WHERE IFNULL(sc."del_flag", 0) <> 1 AND IFNULL(sd."del_flag", 0) <> 1 AND sc."placed" = 2 AND IFNULL(sd.pono, '') <> '' ) , so_pocontr AS (SELECT DISTINCT sc."fno" AS sono, pc."pono" AS pono, sc.DEPT_ID, sc.RPTG, a."cpny" AS foursname, a.cpal, sc."bizType", sc."curcy", sc."serviceType", sc."contractName", sc."totalQty" AS soContrQty, CASE WHEN ifnull(pc."totalQty", 0) = 0 THEN 1 ELSE ifnull(pc."totalQty", 0) END AS poContrQty, sc."ctName", sc."ctNo", CASE WHEN sc.fours IN ('QILU', 'ELD') THEN 0 ELSE IFNULL(sc."stampTaxAmt", 0) END AS stampTaxAmt, CASE WHEN sc.curcy = pc.curcy and sc.curcy = 'USD' THEN 'USD' ELSE 'CNY' END AS curcy_USE, sc."bizProductType", sc.fours, sd2.DEPT_desc as ywFoursName, sc."fclosed", sc.fdate, SC.isinitDate, sd.DEPT_NAME, SC."create_by_name", sc."totalCnyAmt", sc."totalUsdAmt" FROM sopo_check psCjeck LEFT JOIN "salesContract" sc ON psCjeck.fno = sc.fno LEFT JOIN "purchaseContract" pc ON psCjeck.pono = pc.fno LEFT JOIN "addrctrl" a ON a.fno = sc."fours" AND a.del_flag = '0' LEFT JOIN SYS_DEPARTMENT sd ON sc."dept_id" = sd.ID LEFT JOIN SYS_DEPARTMENT sd2 ON SUBSTR(sd.f_id, 0, 7) = sd2.DEPT_CODE WHERE 1 = 1 AND IFNULL(sc."del_flag", 0) <> 1 AND IFNULL(pc."del_flag", 0) <> 1 ) , rate_temp AS ( SELECT IFNULL(r.rate, 1) AS rate, TO_CHAR(m.rateMonth, 'YYYY-MM') AS fdate, ROW_NUMBER() OVER ( PARTITION BY TO_CHAR(m.rateMonth, 'YYYY-MM') ORDER BY m.rateMonth DESC ) AS rn FROM curcyctrl_new m LEFT JOIN curcydtl_new r ON m.id = r.rid AND r.targetcode = 'CNY' AND NVL(R.del_flag, 0) != 1 WHERE NVL(m.del_flag, 0) != 1 AND m.placed = '2' AND m.fname = 'USD' ) , -- 销售货值和采购货值取值逻辑: -- 境内销售货值和采购货值可以通过“通用抛账”界面中的“成本结转”直接进行数据展示 -- 境外只取“进口到票”和“销售结算开票”的数据,不进行重量分摊 --境外“销售结算开票”的数据 jingwai_so AS ( SELECT spd."sono", spd."pono", ss."curcy", max(ss."rateUs") "rateUs", sum(spd."bcQty") AS soQty, sum( case when ss."curcy" = 'USD' THEN spd.soamt ELSE spd.soamt / rtmp.rate END ) AS usdntSoAmt, sum( case when ss."curcy" = 'USD' THEN spd.soamt ELSE spd.soamt / rtmp.rate END) AS usdsoamt, sum( case when ss."curcy" = 'USD' THEN spd.soamt * rtmp.rate ELSE spd.soamt END) AS cnyntSoAmt, sum( case when ss."curcy" = 'USD' THEN spd.soamt * rtmp.rate ELSE spd.soamt END) AS cnysoamt FROM "saleSettle" ss LEFT JOIN (SELECT "rid", "sono", "pono", sum("bcQty") AS bcQty, sum("soamt") AS soamt, sum("ntSoAmt") AS ntSoAmt FROM "settleProdDtl" WHERE IFNULL("del_flag", 0) <> 1 GROUP BY "rid", "sono", "pono") spd ON ss."id" = spd."rid" LEFT JOIN (SELECT "rid", sum("soamt") AS soamt, sum("ntSoAmt") AS ntSoAmt FROM "salesInvDtl" WHERE IFNULL("del_flag", 0) <> 1 GROUP BY "rid") sid on sid."rid" = ss."id" LEFT JOIN rate_temp rtmp ON rtmp.fdate = TO_CHAR(ss."feebackDate", 'YYYY-MM') WHERE 1 = 1 AND IFNULL(ss."del_flag", 0) <> 1 AND ss."fmodalid" = '36' AND ss."foursname" IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') AND ss."impInvoiceStatusDesc" = '入账' AND ss."placed" = '2' GROUP BY spd."sono", spd."pono", ss."curcy" ) , --境外“进口到票”的数据 jingwai_po AS (SELECT pms."pono", sp.sono, pms."curcy", sum(ROUND(pspd."cnypoamt" * (soContrQty / poContrQty), 2) ) AS cnypoamt, sum(ROUND(pspd."cnypoamt" * (soContrQty / poContrQty), 2)) AS cnyntpoamt, sum(ROUND(pspd."usdpoamt" * (soContrQty / poContrQty), 2)) AS usdpoamt, sum(ROUND(pspd."usdpoamt" * (soContrQty / poContrQty), 2)) AS usdntpoamt FROM "purMultiSettle" pms LEFT JOIN "purStlProdDtl" pspd ON pms."id" = pspd."rid" LEFT JOIN so_pocontr sp ON pms.pono = sp.pono WHERE 1 = 1 AND IFNULL(pms."del_flag", 0) <> 1 AND IFNULL(pspd."del_flag", 0) <> 1 AND pms."fmodalid" IN ('37') AND pms."impBcStatus" IN ('部分付款', '财务审核', '财务复核', '待抛账', '待审核', '全部付款') AND pms."placed" = '2' -- ${if(len(date_select) == 0, "", " AND pms.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND pms."feebackDate" < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD') GROUP BY pms."pono", pms."curcy", sp.sono ) , -- 合并境内、境外数据 -- 境内制作临时表关联通用抛账,通用抛账数据较多,需要合并 gg_all AS (SELECT gc.sourceid, sum(IFNULL(g."samt", 0)) AS poamt, sum(IFNULL(g."samt", 0)) AS ntPoamt FROM "GwomiCtrl" gc LEFT JOIN "Gwomidtl" g ON gc.id = g."rid" WHERE 1 = 1 AND IFNULL(g."del_flag", 0) <> 1 AND IFNULL(gc."del_flag", 0) <> 1 AND gc."table1" IN ('成本结转', '成本结转冲销') AND gc."impBcStatus" = '抛账成功' AND gc.fmodalid = '599' GROUP BY gc.sourceid UNION SELECT gc.sourceid2 AS sourceid, sum(IFNULL(g."samt", 0)) AS poamt, sum(IFNULL(g."samt", 0)) AS ntPoamt FROM "GwomiCtrl" gc LEFT JOIN "Gwomidtl" g ON gc.id = g."rid" WHERE 1 = 1 AND IFNULL(g."del_flag", 0) <> 1 AND IFNULL(gc."del_flag", 0) <> 1 AND gc."table1" IN ('成本结转', '成本结转冲销') AND gc."impBcStatus" = '抛账成功' AND gc.fmodalid = '600' GROUP BY gc.sourceid2 ) , sale_amt AS (SELECT spd."sono", ss."curcy", sum(spd."bcQty") AS soQty, sum( CASE WHEN ss."curcy" = 'USD' THEN spd.ntSoAmt * rtmp.rate ELSE spd.ntSoAmt END) AS cnyntSoAmt, sum( CASE WHEN ss."curcy" = 'USD' THEN spd.bcPoamt * rtmp.rate ELSE spd.bcPoamt END) AS cnysoamt, sum(IFNULL(gg."poamt", 0) * (100 + spd."inTaxRate") / 100) AS cnypoamt, sum(IFNULL(gg."ntPoamt", 0)) AS cnyntPoamt, sum(IFNULL(spd.costFeeAmt + spd.provFeeAmt, 0)) AS cnyFeeAmt, 0 AS usdntSoAmt, 0 AS usdsoamt, 0 AS usdpoamt, 0 AS usdntPoamt, 0 AS usdFeeAmt FROM "saleSettle" ss LEFT JOIN (SELECT sono, rid, max(inTaxRate) AS inTaxRate, sum(bcQty) bcQty, sum(ntSoAmt) ntSoAmt, sum(cnysoamt) cnysoamt, sum(bcPoamt) AS bcPoamt, sum(costFeeAmt) costFeeAmt, sum(provFeeAmt) provFeeAmt FROM "settleProdDtl" WHERE IFNULL("del_flag", 0) <> 1 GROUP BY sono, rid, inTaxRate) spd ON ss."id" = spd."rid" LEFT JOIN (SELECT sourceid, sum(poamt) AS poamt, sum(ntPoamt) AS ntPoamt FROM gg_all GROUP BY sourceid) gg ON gg.sourceid = ss.id LEFT JOIN rate_temp rtmp ON rtmp.fdate = TO_CHAR(ss."feebackDate", 'YYYY-MM') WHERE 1 = 1 AND ifnull(ss."del_flag", 0) <> 1 AND SS."fours" NOT IN ('QILU', 'ELD') AND ss."placed" = 2 AND ss."fmodalid" = '36' AND ss."impInvoiceStatus" = 'E' -- ${if(len(date_select) == 0, "", " AND ss.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND spd.sono = 'S52090260002-S' GROUP BY spd."sono", ss."curcy" union SELECT a."sono", a."curcy", a.soQty, a.cnyntSoAmt AS cnyntSoAmt, a.cnySoAmt AS cnysoamt, b.cnyntpoamt AS cnypoamt, b.cnyntpoamt AS cnyntPoamt, 0 AS cnyFeeAmt, a.usdntSoAmt AS usdntSoAmt, a.usdSoAmt AS usdsoamt, b.usdntpoamt AS usdpoamt, b.usdntpoamt AS usdntPoamt, 0 AS usdFeeAmt FROM jingwai_so a LEFT JOIN jingwai_po b ON a.pono = b.pono and a.sono = b.sono ) , -- 财务费用 caiwufeiyong AS (SELECT b."pono", b."sono", sum( CASE WHEN b."feeCd" IN ('10007005', '10007006', '10007031') AND ifnull(a."FMBCA1Status", '') = '抛账成功' THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" * rtmp.rate ELSE b."appAmt" END ELSE 0 END) AS cnyjingwaizijin, sum( CASE WHEN b."feeCd" IN ('10007005', '10007006', '10007031') AND ifnull(a."FMBCA1Status", '') = '抛账成功' THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" ELSE b."appAmt" / rtmp.rate END ELSE 0 END) AS usdjingwaizijin, sum( CASE WHEN b."feeCd" IN ('10007001', '10007004') AND ifnull(a."FMBCA1Status", '') = '抛账成功' THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" * rtmp.rate ELSE b."appAmt" END ELSE 0 END) AS cnyshouxin, sum( CASE WHEN b."feeCd" IN ('10007001', '10007004') AND ifnull(a."FMBCA1Status", '') = '抛账成功' THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" ELSE b."appAmt" / rtmp.rate END ELSE 0 END) AS usdshouxin, sum( CASE WHEN b."feeCd" IN ('10019001', '10019004', '10019005', '10019006') THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" * rtmp.rate ELSE b."appAmt" END WHEN b."feeCd" IN ('10019002', '10019003') THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" * rtmp.rate * -1 ELSE b."appAmt" * -1 END ELSE 0 END) AS cnyhuiduisunyi, sum( CASE WHEN b."feeCd" IN ('10019001', '10019004', '10019005', '10019006') THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" ELSE b."appAmt" / rtmp.rate END WHEN b."feeCd" IN ('10019002', '10019003') THEN CASE WHEN a."curcy" = 'USD' THEN b."appAmt" * -1 ELSE b."appAmt" / rtmp.rate * -1 END ELSE 0 END) AS usdhuiduisunyi FROM "PayMgrctrl" a LEFT JOIN "paystockdtl" b ON a."id" = b."rid" LEFT JOIN rate_temp rtmp ON rtmp.fdate = TO_CHAR(a."feebackDate", 'YYYY-MM') WHERE 1 = 1 AND IFNULL(a."del_flag", 0) <> 1 AND IFNULL(b."del_flag", 0) <> 1 AND a."fmodalid" in ('617', '16') AND !(b."pono" IS NULL AND b."sono" IS NULL ) GROUP BY b."pono", b."sono" ) , caiwufeiyong_all AS (SELECT a.sono, a.pono, ifnull(b.cnyjingwaizijin, 0) + ROUND(ifnull(c.cnyjingwaizijin, 0) * a.soContrQty / a.poContrQty, 2) as cnyjingwaizijin, ifnull(b.cnyshouxin, 0) + ROUND(ifnull(c.cnyshouxin, 0) * a.soContrQty / a.poContrQty, 2) as cnyshouxin, ifnull(b.cnyhuiduisunyi, 0) + ROUND(ifnull(c.cnyhuiduisunyi, 0) * a.soContrQty / a.poContrQty, 2) as cnyhuiduisunyi, ifnull(b.usdjingwaizijin, 0) + ROUND(ifnull(c.usdjingwaizijin, 0) * a.soContrQty / a.poContrQty, 2) as usdjingwaizijin, ifnull(b.usdshouxin, 0) + ROUND(ifnull(c.usdshouxin, 0) * a.soContrQty / a.poContrQty, 2) as usdshouxin, ifnull(b.usdhuiduisunyi, 0) + ROUND(ifnull(c.usdhuiduisunyi, 0) * a.soContrQty / a.poContrQty, 2) as usdhuiduisunyi FROM so_pocontr a LEFT JOIN (SELECT sono, sum(usdjingwaizijin) as usdjingwaizijin, sum(usdshouxin) as usdshouxin, sum(usdhuiduisunyi) as usdhuiduisunyi, sum(cnyjingwaizijin) as cnyjingwaizijin, sum(cnyshouxin) as cnyshouxin, sum(cnyhuiduisunyi) as cnyhuiduisunyi FROM caiwufeiyong GROUP BY sono) B ON a.sono = b.sono LEFT JOIN caiwufeiyong c ON a.pono = c.pono AND IFNULL(c.sono, '') = '' ) , -- 保证金收款金额 sc_ctmarAmt as (SELECT a."sono", sum("claimAmt") AS claimAmt FROM breceiptdtl a JOIN breceiptctrl b ON a.rid = b.id WHERE IFNULL(b.del_flag, 0) = 0 AND IFNULL(a.del_flag, 0) = 0 AND b.fmodalid = 19 -- ${if(len(date_select) == 0, "", " AND b.rcptDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND b.rcptDate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD') AND a.kxlx IN ('保证金') GROUP BY a.sono ) , -- 资金使用成本 zjshy_cb_jn AS (SELECT sono, SUM(days) AS days, SUM(xh_CnyAamt) AS xh_CnyAamt, SUM(pj_CnyAamt) AS pj_CnyAamt FROM (SELECT vfucrd.sono, SUM(vfucrd.days) AS days, SUM(vfucrd.CnyAamt) AS xh_CnyAamt, 0 AS pj_CnyAamt FROM ( SELECT sono, jxdate, SUM(jxfcat * interAmt) AS CnyAamt, MAX( CASE WHEN interAmt <> 0 THEN jxfcat * fundOccuDays ELSE 0 END ) AS days FROM bizInterDtlDay_Cw_close WHERE 1 = 1 AND "jxType" = '常规货款' -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND sono= 'S04794260001-S' --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD') GROUP BY sono, jxdate ) vfucrd GROUP BY vfucrd.sono UNION SELECT bizCw.sono, 0 AS days, 0 AS xh_CnyAamt, SUM(bizCw.jxfcat * bizCw.interAmt) AS pj_CnyAamt FROM bizInterDtlDay_Cw_close bizCw LEFT JOIN "salesContract" sc ON bizCw."sono" = sc."fno" AND IFNULL(sc."del_flag", 0) <> 1 WHERE 1 = 1 AND "jxType" = '承兑汇票' -- 临时增加之后贴现的做好了可以直接去掉 AND !(sc."fours" = 'RZGM' AND sc."serviceType" = '代理-主业进口') -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND sono like 'S04794260001-S' --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD') GROUP BY bizCw.sono) GROUP BY sono ) , rz_date AS ( SELECT IFNULL(a."poOrder", a.pono) AS pono, max(TO_NUMBER(b.finDays)) as finDays FROM financingReq_Total a LEFT JOIN breceiptdtl_rz b ON a.id = b.rid WHERE ifnull(a."del_flag", 0) <> 1 AND ifnull(b."del_flag", 0) <> 1 AND ifnull(b.finDays, 0 ) > 0 group by IFNULL(a."poOrder", a.pono) ) , --资金使用成本占资金额 zjzhanzi as (SELECT sono, sum(interPriAmt) as interPriAmt FROM (SELECT sono, jxdate, SUM(jxfcat * interAmt) AS CnyAamt, SUM(jxfcat * interAmt), sum(jxfcat * "interPriAmt" * fundOccuDays) / 10000 AS interPriAmt, MAX( CASE WHEN interAmt <> 0 THEN jxfcat * fundOccuDays ELSE 0 END ) AS days FROM bizInterDtlDay_Cw_close WHERE 1 = 1 AND "jxType" = '常规货款' -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD') GROUP BY sono, jxdate) GROUP BY sono ORDER BY sono ) , zjshy_cb AS (SELECT a.pono, CASE WHEN ifnull(b.rz_num, 0) <> 0 AND a.foursname IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') THEN e.finDays ELSE d.days END AS days, CASE WHEN ifnull(b.rz_num, 0) <> 0 AND a.foursname IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') THEN c.usdjingwaizijin ELSE d.xh_CnyAamt END AS CnyAamt FROM purchaseContract a LEFT JOIN (SELECT fr.pono, count(fr.pono) AS rz_num FROM financingReq fr WHERE IFNULL(fr.del_flag, 0) <> 1 GROUP BY fr.pono) b ON a.pono = b.pono LEFT JOIN caiwufeiyong_all c ON a.pono = c.pono LEFT JOIN zjshy_cb_jn d ON a.sono = d.sono LEFT JOIN rz_date e ON a.pono = e.pono WHERE IFNULL(del_flag, 0) <> 1 AND placed = 2 ) , free_so as (SELECT sono, COUNT(*) AS fee_count, -- 费用笔数 SUM(poamt) AS total_poamt, -- 原币总额 SUM(ntCnyAmt) AS total_ntCnyAmt, -- 不含税人民币总额 SUM(ntUsdAmt) AS total_ntUsdAmt -- 不含税美元总额 from (SELECT -- 优先用销售合同号,没有则通过采购合同号关联查找 COALESCE(dtl."sono", rel.sono) AS sono, dtl."feeCd", dtl."feeNm", dtl."poamt", dtl."inTaxRate", ROUND((dtl."cnypoamt" / (1 + dtl."inTaxRate" / 100)), 2) AS ntCnyAmt, ROUND((dtl."usdpoamt" / (1 + dtl."inTaxRate" / 100)), 2) AS ntUsdAmt FROM "purMultiSettle" main INNER JOIN "purStlProdDtl" dtl ON main."id" = dtl."rid" LEFT JOIN so_pocontr rel ON dtl."pono" = rel.pono WHERE IFNULL(main."del_flag", 0) <> 1 AND IFNULL(dtl."del_flag", 0) <> 1 AND IFNULL(main."placed", 0) = 2 AND main."fmodalid" = '300' AND main."cateName" NOT IN ('代收代付类') -- ${if(len(date_select) == 0, "", " AND main.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")} --AND main."feebackDate" < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD') AND (dtl."pono" IS NOT NULL OR dtl."sono" IS NOT NULL) ) GROUP BY sono ) , date_all_before AS ( SELECT distinct a.sono AS 销售合同号, --a.pono AS 采购合同号, a."foursname" AS 我方名称, a."serviceType" AS 业务类型, a."curcy" AS 币别, a."bizProductType", a."ctName" as 客户名称, b.soQty AS 销售数量, a.fours, a.cpal,a.fclosed, case when a.curcy_USE = 'USD' THEN b.usdntSoAmt ELSE b.cnyntSoAmt END AS 销售金额不含税, a.curcy_USE, case when a.curcy_USE = 'USD' THEN b.usdsoamt ELSE b.cnySoAmt END AS 销售金额含税, case when a.curcy_USE = 'USD' THEN b.usdntPoamt ELSE b.cnyntPoAmt END AS 采购金额不含税, case when a.curcy_USE = 'USD' THEN b.usdpoamt ELSE b.cnypoAmt END AS 采购金额含税, case when a."foursname" IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') THEN case when a.curcy_USE = 'USD' THEN IFNULL(c.usdshouxin, 0) + IFNULL(C.usdjingwaizijin, 0) ELSE IFNULL(c.cnyshouxin, 0) + IFNULL(c.cnyjingwaizijin, 0) END ELSE case when a.curcy_USE = 'USD' THEN IFNULL(c.usdshouxin, 0) ELSE IFNULL(c.cnyshouxin, 0) END END AS 银行授信, case when a.curcy_USE = 'USD' THEN IFNULL(c.usdhuiduisunyi, 0) ELSE IFNULL(c.cnyhuiduisunyi, 0) END AS 汇兑损益, round(IFNULL(d.claimAmt, 0), 2) as 保证金, IFNULL(a."stampTaxAmt", 0) AS 印花税, case when a."foursname" IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') then 0 ELSE case when a."contractName" in('钢材加工废料') then 0 else ifnull(e.days, 0) end END days, case when a."foursname" IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') then 0 else case when a."contractName" in('钢材加工废料') then 0 else ifnull(e.xh_CnyAamt, 0) end END xh_CnyAamt, case when a."foursname" IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') then 0 else case when a."contractName" in('钢材加工废料') then 0 else ifnull(e.pj_CnyAamt, 0) end END pj_CnyAamt, case when a.fours IN ('QILU', 'ELD') then case when a.curcy_USE = 'USD' then f.total_ntUsdAmt else f.total_ntCnyAmt end else case when a.curcy_USE = 'USD' then b.usdFeeAmt else b.cnyFeeamt END END as 费用, a.ywFoursName 业务我方名称, A."create_by_name", a.DEPT_NAME, case when a."foursname" IN ('齐鲁钢铁有限公司', '埃尔顿发展有限公司') then 0 else IFNULL(g.interPriAmt, 0) end AS interPriAmt, a."totalCnyAmt" FROM "so_pocontr" a LEFT JOIN sale_amt b ON a.sono = b.sono LEFT JOIN caiwufeiyong_all c ON a.sono = c.sono AND a.pono = IFNULL(c.pono, a.pono) LEFT JOIN sc_ctmarAmt d ON a.sono = d.sono LEFT JOIN zjshy_cb_jn e ON a.sono = e.sono left join free_so f on a.sono = f.sono left join zjzhanzi g on a.sono = g.sono WHERE 1 = 1 AND b.soQty IS NOT NULL AND a.fdate >= '2026-01-01' AND IFNULL(A."isinitDate", '') <> '是' --AND IFNULL(a."fclosed",0) = 1-- 此处补充合同关闭逻辑 order by a.sono ), data_final AS ( SELECT DISTINCT *, CASE WHEN fours IN ('QILU', 'ELD') THEN (((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) ELSE ((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) END AS "利润", CASE WHEN "销售金额不含税" = 0 THEN 0 ELSE CASE WHEN fours IN ('QILU', 'ELD') THEN ((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / "销售金额不含税") ELSE (((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / "销售金额不含税") END END AS "销售利润", CASE WHEN ("采购金额含税" = 0 OR days = 0 ) THEN 0 ELSE (((("销售金额含税" - "采购金额含税") / "采购金额含税") / days) * 360) END AS "年化资金收益率", CASE WHEN (("采购金额含税" - "保证金") = 0 OR days = 0 ) THEN 0 ELSE CASE WHEN fours IN ('QILU', 'ELD') THEN ((((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / ("采购金额含税" - "保证金")) / days) * 360) ELSE (((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / ("采购金额含税" - "保证金")) / days) * 360) END END AS "年化业务收益率", case when days <> 0 then interPriAmt / days else 0 end as 平均占资金额, case when days <> 0 then interPriAmt * 10000 / days / totalCnyAmt else 0 END as "平均占资/销售金额" FROM date_all_before ) SELECT v."销售合同号", v."cpal", v."我方名称", v."业务类型", v."币别", v."bizProductType", v."客户名称", v."销售数量", v."销售金额不含税", v."销售金额含税", v."采购金额不含税", v."采购金额含税", v."银行授信", v."汇兑损益", v."保证金", v."印花税", v."days", v."pj_CnyAamt", v.xh_CnyAamt, v."费用", v."业务我方名称", v."create_by_name", v."fours", v."fclosed", v.curcy_USE, v."利润", v."销售利润", v."年化资金收益率", v."年化业务收益率", v.interPriAmt as "现汇占用资金金额(万元·天)", v.平均占资金额, v."平均占资/销售金额", CASE WHEN COALESCE(v.days, 0) < 15 THEN CASE WHEN COALESCE(v."销售利润", 0) <= 0 THEN '无效' WHEN (COALESCE(v."销售利润", 0) > 0 AND COALESCE(v."销售利润", 0) <= 0.003 ) THEN '低效' WHEN (COALESCE(v."销售利润", 0) > 0.003 AND COALESCE(v."销售利润", 0) <= 0.006 ) THEN '基效' WHEN (COALESCE(v."销售利润", 0) > 0.006 AND COALESCE(v."销售利润", 0) <= 0.01 ) THEN '中效' WHEN (COALESCE(v."销售利润", 0) > 0.01 AND COALESCE(v."销售利润", 0) <= 0.02 ) THEN '高效' WHEN COALESCE(v."销售利润", 0) > 0.02 THEN '卓效' ELSE '无效' END WHEN COALESCE(v.days, 0) >= 15 THEN CASE WHEN COALESCE(v."年化业务收益率", 0) > 0.09 THEN '卓效' WHEN (COALESCE(v."年化业务收益率", 0) > 0.065 AND COALESCE(v."年化业务收益率", 0) <= 0.09 ) THEN '高效' WHEN COALESCE(v."年化业务收益率", 0) <= 0.065 THEN CASE WHEN COALESCE(v."年化资金收益率", 0) <= 0.05 THEN '无效' WHEN (COALESCE(v."年化资金收益率", 0) > 0.05 AND COALESCE(v."年化资金收益率", 0) <= 0.06 ) THEN '低效' WHEN (COALESCE(v."年化资金收益率", 0) > 0.06 AND COALESCE(v."年化资金收益率", 0) <= 0.065 ) THEN '基效' WHEN COALESCE(v."年化资金收益率", 0) > 0.065 THEN '中效' ELSE '无效' END ELSE '无效' END ELSE '无效' END AS "efficiency_level" FROM data_final AS v ORDER BY v.days DESC;