IC AND IC_CF

IC内部往来,包含应收应付,预收预付等科目。需要重分类。

IC_CF 内部交易,包含损益科目。

加载目标:DATI_SADI_IC


SAP : 

应收应付:

WITH T600ARAP AS (
SELECT ({IN-YEARMONTH}) YEARMONTH,SUBSTR({IN-YEARMONTH},1,4)||'ACT' SCENARIO,SUBSTR({IN-YEARMONTH},5,2) ZMONTH,
BUKRS,HKONT,'ZZCC' PRCTR,'ZZPL' RBUSA,CUSVEN RASSC,CATEG,WAERS,DMBTR,WRBTR,E.COD_VALUTA AS LCURR,
(CASE WHEN SUM(DMBTR) OVER (PARTITION BY BUKRS,SUBSTR(HKONT,1,4),CUSVEN,CATEG) > 0 THEN 'S' 
WHEN SUM(DMBTR) OVER (PARTITION BY BUKRS,SUBSTR(HKONT,1,4),CUSVEN,CATEG) < 0 THEN 'H' 
ELSE 'E' END) SHMARK
FROM (
SELECT BUKRS,HKONT,CUSVEN,CATEG,WAERS,SUM(DMBTR) DMBTR,SUM(WRBTR) WRBTR,CVMARK
FROM (
SELECT BUKRS,HKONT,B.ELEDIM_OUTPUT1 CUSVEN,CATEG,WAERS,DMBTR,WRBTR,CVMARK
FROM (
SELECT BUKRS,HKONT,CUSVEN,CATEG,WAERS,SUM(DMBTR) DMBTR,SUM(WRBTR) WRBTR ,CVMARK
FROM (
SELECT BUKRS,HKONT,KUNNR CUSVEN,WAERS,'C' AS CVMARK,
 '$AMOUNT' AS CATEG,(CASE SHKZG WHEN 'S' THEN DMBTR ELSE -1*DMBTR END) DMBTR,(CASE SHKZG WHEN 'S' THEN WRBTR ELSE -1*WRBTR END) WRBTR
FROM ODS.ODSS600_BSID@FMSLK t
WHERE TO_CHAR(BUDAT,'YYYYMM') <= ({IN-YEARMONTH}) AND  BUKRS IN ({IN-ENTITY}) 
      AND HKONT IN (SELECT DISTINCT SAKNR FROM ODS.ODSS600_SKB1@FMSLK WHERE (SAKNR LIKE '1%' OR SAKNR LIKE '2%') AND MITKZ IN ('D','K'))
UNION ALL
SELECT BUKRS,HKONT,KUNNR CUSVEN,WAERS, 'C' AS CVMARK,
'$AMOUNT' AS CATEG,(CASE SHKZG WHEN 'S' THEN DMBTR ELSE -1*DMBTR END) DMBTR,(CASE SHKZG WHEN 'S' THEN WRBTR ELSE -1*WRBTR END) WRBTR
FROM ODS.ODSS600_BSAD@FMSLK t
WHERE TO_CHAR(AUGDT,'YYYYMM') > ({IN-YEARMONTH}) AND TO_CHAR(BUDAT,'YYYYMM') <= ({IN-YEARMONTH}) AND  BUKRS IN ({IN-ENTITY})
      AND HKONT IN (SELECT DISTINCT SAKNR FROM ODS.ODSS600_SKB1@FMSLK WHERE (SAKNR LIKE '1%' OR SAKNR LIKE '2%') AND MITKZ IN ('D','K'))
UNION ALL
SELECT BUKRS,HKONT,LIFNR CUSVEN,WAERS, 'V' AS CVMARK,
'$AMOUNT' AS CATEG,(CASE SHKZG WHEN 'S' THEN DMBTR ELSE -1*DMBTR END) DMBTR,(CASE SHKZG WHEN 'S' THEN WRBTR ELSE -1*WRBTR END) WRBTR
FROM ODS.ODSS600_BSIK@FMSLK t
WHERE TO_CHAR(BUDAT,'YYYYMM') <= ({IN-YEARMONTH}) AND  BUKRS IN ({IN-ENTITY})
      AND HKONT IN (SELECT DISTINCT SAKNR FROM ODS.ODSS600_SKB1@FMSLK WHERE (SAKNR LIKE '1%' OR SAKNR LIKE '2%') AND MITKZ IN ('D','K'))
UNION ALL
SELECT BUKRS,HKONT,LIFNR CUSVEN,WAERS,'V' AS CVMARK,
'$AMOUNT' AS CATEG,(CASE SHKZG WHEN 'S' THEN DMBTR ELSE -1*DMBTR END) DMBTR,(CASE SHKZG WHEN 'S' THEN WRBTR ELSE -1*WRBTR END) WRBTR
FROM ODS.ODSS600_BSAK@FMSLK t
WHERE TO_CHAR(AUGDT,'YYYYMM') > ({IN-YEARMONTH}) AND TO_CHAR(BUDAT,'YYYYMM') <= ({IN-YEARMONTH}) AND  BUKRS IN ({IN-ENTITY})
      AND HKONT IN (SELECT DISTINCT SAKNR FROM ODS.ODSS600_SKB1@FMSLK WHERE (SAKNR LIKE '1%' OR SAKNR LIKE '2%') AND MITKZ IN ('D','K'))
) 
GROUP BY BUKRS,HKONT,CUSVEN,CATEG,WAERS,CVMARK
HAVING SUM(DMBTR) <> 0 OR SUM(WRBTR) <> 0
) A
INNER JOIN
(SELECT ELEDIM_INPUT1,ELEDIM_INPUT2,ELEDIM_OUTPUT1 FROM MAP_REGOLA_TAB_ELEMENTO 
WHERE COD_MAPPATURA = 'HI_DATA_IC' AND COD_REGOLA_TAB = 'MAP_CUSVEN_ENTITY_600') B
ON A.CUSVEN = B.ELEDIM_INPUT1 AND A.CVMARK=B.ELEDIM_INPUT2
WHERE B.ELEDIM_OUTPUT1 IS NOT NULL AND ELEDIM_INPUT2 IS NOT NULL
)
GROUP BY BUKRS,HKONT,CUSVEN,CATEG,WAERS,CVMARK
HAVING SUM(DMBTR) <> 0 OR SUM(WRBTR) <> 0
) T
LEFT JOIN 
(SELECT A.COD_AZIENDA,A.COD_VALUTA FROM AZIENDA A WHERE A.COD_AZIENDA<>'$') E
ON T.BUKRS=E.COD_AZIENDA
)

SELECT YEARMONTH,SCENARIO,ZMONTH,BUKRS,
       (CASE WHEN (HKONT LIKE '1121%' OR HKONT LIKE '1122%') AND SHMARK = 'H' THEN '2203000000'
             WHEN HKONT LIKE '1221%' AND SHMARK = 'H' THEN '224100A03'
             WHEN (HKONT LIKE '2201%' OR HKONT LIKE '2202%') AND SHMARK = 'S' THEN '1123000000'
             WHEN HKONT LIKE '2241%' AND SHMARK = 'S' THEN '122100A03'
        ELSE HKONT
        END) AS HKONT,PRCTR,RBUSA,RASSC,CATEG,WAERS,DMBTR,WRBTR,LCURR,SHMARK,'SAP600' AS CLIENT,'WL' NOTE
FROM T600ARAP
其他业务收入往来:

SELECT * FROM (
SELECT A.GJAHR||'ACT' SCENARIO,SUBSTR({IN-YEARMONTH},5,2) ZMONTH,A.BUKRS,'6051010000' HKONT
,SUM(CASE SHKZG WHEN 'H' THEN -1*A.DMBTR ELSE A.DMBTR END) DMBTR,B.CUSVEN,{IN-YEARMONTH} YEARMONTH,'600' CLIENT,'OTHERS' NOTE
 FROM
(SELECT * FROM ODS.ODSS600_BSEG_M@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND BKPF_MONAT <= SUBSTR({IN-YEARMONTH},5,2) AND HKONT LIKE '6051%')A
INNER JOIN
(SELECT GJAHR,BUKRS,BELNR,MAX(ELEDIM_OUTPUT1) CUSVEN FROM
(SELECT GJAHR,BUKRS,BELNR,KUNNR FROM ODS.ODSS600_BSID@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND TO_CHAR(BUDAT,'MM')<= SUBSTR({IN-YEARMONTH},5,2)
UNION ALL
 SELECT GJAHR,BUKRS,BELNR,KUNNR FROM ODS.ODSS600_BSAD@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND TO_CHAR(BUDAT,'MM')<= SUBSTR({IN-YEARMONTH},5,2))C
INNER JOIN 
(select ELEDIM_INPUT1,ELEDIM_OUTPUT1 from MAP_REGOLA_TAB_ELEMENTO t WHERE COD_MAPPATURA = 'HI_DATA_IC' AND COD_REGOLA_TAB = 'MAP_CUSVEN_ENTITY_600' AND ELEDIM_INPUT2 = 'C')MC
ON C.KUNNR = MC.ELEDIM_INPUT1
WHERE ELEDIM_OUTPUT1 IS NOT NULL
GROUP BY GJAHR,BUKRS,BELNR)B
ON A.GJAHR = B.GJAHR AND A.BUKRS = B.BUKRS AND A.BELNR = B.BELNR
GROUP BY A.GJAHR,A.BUKRS,B.CUSVEN
)
WHERE BUKRS IN ({IN-ENTITY})
内部现金流往来:

SELECT * FROM (
SELECT A.GJAHR||'ACT' SCENARIO,SUBSTR({IN-YEARMONTH},5,2) ZMONTH,A.BUKRS,ZZCASH,'600' CLIENT,'CF' NOTE
,SUM(CASE SHKZG WHEN 'H' THEN -1*A.DMBTR ELSE A.DMBTR END) DMBTR,B.CUSVEN,{IN-YEARMONTH} YEARMONTH
 FROM
(SELECT * FROM ODS.ODSS600_BSEG_CF@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND BKPF_MONAT <= SUBSTR({IN-YEARMONTH},5,2) AND HKONT LIKE '10%')A
INNER JOIN
(SELECT GJAHR,BUKRS,BELNR,MAX(ELEDIM_OUTPUT1) CUSVEN FROM
(SELECT GJAHR,BUKRS,BELNR,KUNNR FROM ODS.ODSS600_BSID@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND TO_CHAR(BUDAT,'MM')<= SUBSTR({IN-YEARMONTH},5,2)
UNION ALL
 SELECT GJAHR,BUKRS,BELNR,KUNNR FROM ODS.ODSS600_BSAD@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND TO_CHAR(BUDAT,'MM')<= SUBSTR({IN-YEARMONTH},5,2))C
INNER JOIN 
(select ELEDIM_INPUT1,ELEDIM_OUTPUT1 from MAP_REGOLA_TAB_ELEMENTO t WHERE COD_MAPPATURA = 'HI_DATA_IC' AND COD_REGOLA_TAB = 'MAP_CUSVEN_ENTITY_600' AND ELEDIM_INPUT2 = 'C')MC
ON C.KUNNR = MC.ELEDIM_INPUT1
WHERE ELEDIM_OUTPUT1 IS NOT NULL
GROUP BY GJAHR,BUKRS,BELNR)B
ON A.GJAHR = B.GJAHR AND A.BUKRS = B.BUKRS AND A.BELNR = B.BELNR
GROUP BY A.GJAHR,A.BUKRS,A.ZZCASH,B.CUSVEN

UNION ALL

SELECT A.GJAHR||'ACT' SCENARIO,SUBSTR({IN-YEARMONTH},5,2) ZMONTH,A.BUKRS,ZZCASH,'600' CLIENT,'CF' NOTE
,SUM(CASE SHKZG WHEN 'H' THEN -1*A.DMBTR ELSE A.DMBTR END) DMBTR,B.CUSVEN,{IN-YEARMONTH} YEARMONTH
 FROM
(SELECT * FROM ODS.ODSS600_BSEG_CF@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND BKPF_MONAT <= SUBSTR({IN-YEARMONTH},5,2) AND HKONT LIKE '10%')A
INNER JOIN
(SELECT GJAHR,BUKRS,BELNR,MAX(ELEDIM_OUTPUT1) CUSVEN FROM
(SELECT GJAHR,BUKRS,BELNR,LIFNR FROM ODS.ODSS600_BSIK@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND TO_CHAR(BUDAT,'MM')<= SUBSTR({IN-YEARMONTH},5,2)
UNION ALL
 SELECT GJAHR,BUKRS,BELNR,LIFNR FROM ODS.ODSS600_BSAK@FMSLK WHERE GJAHR = SUBSTR({IN-YEARMONTH},1,4) AND TO_CHAR(BUDAT,'MM')<= SUBSTR({IN-YEARMONTH},5,2))C
INNER JOIN 
(select ELEDIM_INPUT1,ELEDIM_OUTPUT1 from MAP_REGOLA_TAB_ELEMENTO t WHERE COD_MAPPATURA = 'HI_DATA_IC' AND COD_REGOLA_TAB = 'MAP_CUSVEN_ENTITY_600' AND ELEDIM_INPUT2 = 'V')MV
ON C.LIFNR = MV.ELEDIM_INPUT1
WHERE ELEDIM_OUTPUT1 IS NOT NULL
GROUP BY GJAHR,BUKRS,BELNR)B
ON A.GJAHR = B.GJAHR AND A.BUKRS = B.BUKRS AND A.BELNR = B.BELNR
GROUP BY A.GJAHR,A.BUKRS,A.ZZCASH,B.CUSVEN
)
WHERE BUKRS IN ({IN-ENTITY})

K3:

应收应付+内部交易(主营业务收入+其他业务收入):

WITH SS AS (
select *
      from ODS.ODSTTKD_v_MR_DETAIL@FMSLK  
      where fcurrencyid = 0  AND fdetailid <> 0
)
SELECT * FROM(
select YEARMONTH,fyear,fperiod,custcode,custsppname,
       (CASE WHEN  endbalance <0  AND subjcode LIKE '1122%' THEN '2203'
             WHEN  SUBJCODE LIKE '2203%' AND ENDBALANCE <0  THEN '1122'    
             WHEN  subjcode LIKE '1221%' and endbalance <0  THEN '2241.01'
             WHEN  SUBJCODE LIKE '2241%' AND ENDBALANCE >0  THEN '1221.02'
             WHEN SUBJCODE LIKE '2202%' AND ENDBALANCE >0  THEN '1123'
             WHEN SUBJCODE LIKE '1123%' AND ENDBALANCE <0 THEN  '2202'
        ELSE subjcode
        END) subjcode,subjlev,
        companycode,companyname,beginbalance,localdebitamount,localcreditamount, endbalance
    ,'K3' CLIENT 
  from(
    select YEARMONTH,fyear,fperiod,custcode,custsppname,subjcode,subjlev,M.ELEDIM_OUTPUT1 companycode,
           companyname,sum(beginbalance) beginbalance,sum(localdebitamount) localdebitamount,sum(localcreditamount) localcreditamount,sum(endbalance) endbalance,'K3' CLIENT 
    from(
      select fyear||lpad(cast(fperiod  AS VARCHAR(2)),2,'0')  YEARMONTH,fyear||'ACT' FYEAR,
             lpad(cast(fperiod  AS VARCHAR(2)),2,'0')  fperiod,M.ELEDIM_OUTPUT1  custcode,
             custsppname,DECODE(SUBSTR(subjcode,1,4),'1122','1122','2202','2202',SUBJCODE) SUBJCODE,subjname,subjlev,companycode,companyname,beginbalance,localdebitamount,
             localcreditamount,endbalance,'K3' CLIENT
      from   SS v
      LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_CUSVEN_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_IC' AND M.ELEDIM_INPUT2 = v.custcode
      where substr(subjcode,1,4) in ('5001','5002','1121','1122','1123','1221','2201','2202','2203','2241')  and custsppname is not null AND M.ELEDIM_OUTPUT1 IS NOT NULL 
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_BUKRS_K3' AND M.COD_MAPPATURA = 'HI_DATA_GL' AND M.ELEDIM_INPUT2 = S.companycode
    group by  YEARMONTH,fyear,fperiod,custcode,custsppname,subjcode,subjlev, m.ELEDIM_OUTPUT1,
           companyname
  )
  )
  where COMPANYCODE IN ({IN-ENTITY}) AND YEARMONTH IN ({IN-YEARMONTH}) 
  order by fyear,companycode,subjcode,custcode,fperiod

内部现金流往来:


with c1 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '01' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 1
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c2 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '02' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 2
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c3 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '03' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 3
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c4 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '04' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <=4
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c5 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '05' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 5
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c6 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '06' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 6
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c7 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '07' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 7
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c8 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '08' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 8
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c9 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '09' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 9
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c10 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '10' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 10
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c11 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '11' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod <= 11
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
),
c12 as (
  SELECT *  FROM (
    SELECT FYEAR||fperiod YEARMONTH, fyear,fperiod,FYEAR||'ACT' SCENARIO,m.ELEDIM_OUTPUT1 companycode,
    companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           SUM(FAMOUNT)  FAMOUNT,
           SUM(famountfor) famountfor,client
      FROM(
        SELECT 
          fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
          SUM(FAMOUNT) FAMOUNT,SUM(famountfor) famountfor, client
        FROM(
          select 
           fyear, '12' fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,
           FAMOUNT,famountfor,'K3' client
           from ODS.ODSTTKD_V_MR_CASHFLOW@FMSLK 
           where fperiod  <= 12
        )
      GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client
    ) S
    LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_ENTITY_K3' AND M.COD_MAPPATURA = 'HI_DATA_CF' AND M.ELEDIM_INPUT2 = S.companycode
    
     GROUP BY fyear,fperiod,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,m.ELEDIM_OUTPUT1 ORDER BY COMPANYCODE ,ITEMNAME
  )
)

SELECT * FROM (
select YEARMONTH, fyear,fperiod,SCENARIO,companycode,companyname,itemcode,itemname,fcurrencyid,CUSTCODE,CUSTSPPNAME,client,'K3_CF' NOTE,
           DECODE(SUBSTR(ITEMCODE,6,2),02,FAMOUNT * -1,FAMOUNT) FAMOUNT,
           DECODE(SUBSTR(ITEMCODE,6,2),02,famountfor * -1,famountfor) famountfor
 from (
  select * from c1 
  union all
  select * from c2 
  union all
  select * from c3 
  union all
  select * from c4 
  union all
  select * from c5 
  union all
  select * from c6 
  union all
  select * from c7 
  union all
  select * from c8 
  union all
  select * from c9 
  union all
  select * from c10 
  union all
  select * from c11 
  union all
  select * from c12 
)
)
WHERE   YEARMONTH IN ({IN-YEARMONTH}) AND companycode IN ({IN-ENTITY})

NC:

应收应付+内部交易:

with s1 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select  V.yearv||'01' YEARMONTH,v.yearv,'01' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 01 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s2 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'02' YEARMONTH,v.yearv,'02' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 02 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s3 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'03' YEARMONTH,v.yearv,'03' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 03 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s4 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'04' YEARMONTH,v.yearv,'04' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 04 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s5 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'05' YEARMONTH,v.yearv,'05' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 05 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s6 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'06' YEARMONTH,v.yearv,'06' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 06 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s7 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'07' YEARMONTH,v.yearv,'07' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 07 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s8 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'08' YEARMONTH,v.yearv,'08' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 08  
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s9 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'09' YEARMONTH,v.yearv,'09' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 09  
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s10 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'10' YEARMONTH,v.yearv,'10' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 10 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s11 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'11' YEARMONTH,v.yearv,'11' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 11  
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
),
 s12 as (
select  YEARMONTH,yearv||'ACT'  YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
        SUM(balance)  balance,sum(creditamount) creditamount,sum(debitamount) debitamount,direction ,CLIENT
from
(
  select V.yearv||'12' YEARMONTH,v.yearv,'12' periodv,v.unitcode,v.unitname,valuecode,valuename,
         v.subjcode,v.subjname,sum(creditamount) creditamount, sum(debitamount) debitamount,
         (case direction when 'C' then 'H' when 'D' then 'S' end) direction ,
         sum(v.creditamount * -1 + v.debitamount) balance,'YONYOU' CLIENT
  from ODS.Odsreyy_V_Gl_Detail@FMSLK v
  WHERE valuecode LIKE '02%' AND PERIODV <= 12 
  group by  v.yearv , v.unitcode,v.unitname,valuecode,valuename ,v.subjcode,v.subjname,direction,periodv
  order by valuecode,subjcode
)
group by  YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename ,subjcode,subjname,direction ,CLIENT
order by valuecode,subjcode
)

SELECT YEARMONTH,YEARV,periodv,unitcode,unitname,valuecode,valuename,subjcode,subjname,
       balance, creditamount, debitamount,direction ,CLIENT 
FROM (
SELECT YEARMONTH,YEARV,periodv,M.ELEDIM_OUTPUT1 unitcode,unitname,valuecode,valuename,subjcode,subjname,
       balance, creditamount, debitamount,direction ,CLIENT 
 FROM (
  select * from s1
  union all
  select * from s2
  union all 
  select * from s3
  union all 
  select * from s4
  union all 
  select * from s5
  union all 
  select * from s6
  union all 
  select * from s7
  union all 
  select * from s8
  union all 
  select * from s9
  union all 
  select * from s10
  union all 
  select * from s11
  union all 
  select * from s12
) t
left join MAP_REGOLA_TAB_ELEMENTO m  ON M.COD_REGOLA_TAB = 'MAP_ENTITY_YONYOU' AND M.COD_MAPPATURA = 'HI_DATA_IC' AND M.ELEDIM_INPUT2 = T.UNITCODE
)
WHERE YEARMONTH IN ({IN-YEARMONTH})  and unitcode in ({IN-ENTITY})  and substr(subjcode,1,4) in ('5001','5002','1121','1122','1221','2201','2202','2203','2241')

内部现金流往来:

with c1 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
  select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
     CLIENT,SUM(BALANCE) balance
    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'01' periodv,YEAR||'01' YEARMONTH,
         SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
     WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
        and period <= 01 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
     group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv,CLIENT
   )     
 ),
 c2 as(
 select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
        'YONYOU'CLIENT,SUM(BALANCE) balance
 
    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'02' periodv,YEAR||'02' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
 WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 02 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
 c3 as(
 select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
       'YONYOU'CLIENT,SUM(BALANCE) balance
  from(
   
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'03' periodv,YEAR||'03' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
  WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 03 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
 c4 as(
 select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
        'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'04' periodv,YEAR||'04' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
     WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 04 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
 c5 as(
 select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
        'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'05' periodv,YEAR||'05' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
     WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 05 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c6 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
       'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'06' periodv,YEAR||'06' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
  WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 06 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c7 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
        'YONYOU'CLIENT,SUM(BALANCE) balance
  
    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'07' periodv,YEAR||'07' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
     WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 07 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c8 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
      'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'08' periodv,YEAR||'08' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
   WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 08
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c9 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
       'YONYOU'CLIENT,SUM(BALANCE) balance
 
    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'09' periodv,YEAR||'09' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
   WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 09 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c10 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
        'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'10' periodv,YEAR||'10' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
 WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 10 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c11 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
      'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'11' periodv,YEAR||'11' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
  WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 11 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 ),
  c12 as(
  select  YEARMONTH, SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT
  from(
select YEARMONTH,YEARV||'ACT' SCENARIO,unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv,
       'YONYOU'CLIENT,SUM(BALANCE) balance

    from
     (
       select unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev, YEAR YEARV,'12' periodv,YEAR||'12' YEARMONTH,
           SUM(localcreditamount*-1 + localdebitamount) balance,'YONYOU'CLIENT
      from ODS.ODSREYY_V_MR_CASHFLOWIN@FMSLK v 
    WHERE  valuename not like '期初'and valuename not like '%存提现及转账%'
        and valuename not like '%存货的减少%'and valuename not like '%经营性应付项目的增加%'
          and period <= 12 
      group by unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,period,year
      order by unitcode,unitname,subjcode,year,period
     ) 
       group by YEARMONTH,unitcode,unitname,subjcode,subjname,subjlev,cashcode,cashname,valuecode,valuename,periodv,yearv
   )
 )

SELECT * FROM (
 select  YEARMONTH, SCENARIO, M.ELEDIM_OUTPUT1 unitcode,unitname,subjcode,subjname,cashcode,cashname,valuecode,valuename,subjlev,YEARV,periodv, balance,CLIENT,'NC_CF'  NOTE  from (
 select * from c1 
 union all 
 select * from c2
 union all 
 select * from c3
 union all 
 select * from c4
 union all 
 select * from c5
 union all  
 select * from c6
 union all  
 select * from c7
 union all 
 select * from c8
 union all 
 select * from c9
 union all 
 select * from c10
 union all 
 select * from c11
 union all 
 select * from c12
)  S
  LEFT JOIN MAP_REGOLA_TAB_ELEMENTO M ON M.COD_REGOLA_TAB = 'MAP_BUKRS_YONYOU' AND M.COD_MAPPATURA = 'HI_DATA_GL' AND M.ELEDIM_INPUT2 = S.unitcode  
)
 WHERE YEARMONTH IN ({IN-YEARMONTH}) AND UNITCODE IN ({IN-ENTITY})
 order by cashcode,cashname,valuecode,VALUENAME,UNITCODE,SUBJCODE,YEARV,PERIODV




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值