您的位置:首页 > 其它

IC AND IC_CF

2017-06-26 21:12 387 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: