没有名字-先别给我删

  • 文档创建者:Wendy123456
  • 历史版本:3
  • 最近更新:Wendy123456 于 2023-10-19
  • FILL_MANAGE_ITEM

    做了个数据比对

    来源表、目标表,数据比对,数据输出

    来源表:

    MID_FYFX_HZPROP:

    7.png

    fill_dim_unit:全部数据

    fill_manage_item:部分数据

    目标表:

    FILL_MANAGE_ITEM

    来源表和目标表做数据比对


    最终结果输出到:

    SQL SERVER FR 已存在表:FILL_MANAGE_ITEM

    MID_FYFX_DETAIL

    数据同步节点

    -- create view v_fy_gl as 

    /*
    费用的时间范围在b临时表中的a表中限制;
    a、b划分采取三种不同规则归集所属事业部的数据范围,两个uion all连接的三段sql分别按照三种规则对各自数据进行处理;
    按照isnull(辅助帐金额,分录表金额) as amountsum,最终应当sum(amountsum);
    FYcount字段标记了既有财务科目又有费用形态的费用,费用分析表只统计FYcount=1的科目;
    GLcount字段标记了非香港、杭州研究院的费用,按事业部和集团汇总时只统计GLcount=1的费用
    */

    with AA as (--杭州公司需要分摊的成本中心
    select
    org.fid,
    org.fnumber,
    org.fname_l2
    from EAS_T_ORG_BaseUnit org
    left join ODS_ORANZATION ods on org.fnumber = ods.id collate Chinese_PRC_CS_AI
    where ods.id like '04%'
    and (ods.unit = '' or ods.unit is null)
    )
    ,B as (--区分不同规则的数据范围,同时把能取的字段取出来,并合并可以合并的辅助账
    select 
    A.FID billid,
    b.fid entryid,
    case 
    when CBL.TYPE = 1 --费用科目编码在无部门清单中,且为股份公司
    then '11' 
    when CBL.TYPE = 2 and B.FCOMPANYID <> 'XY4AAAAAALnM567U' --费用科目编码在无部门清单中,为事业部费用,且费用发生公司非杭州:按公司对应事业部
    then '12' 
    when CBL.TYPE = 2 and B.FCOMPANYID = 'XY4AAAAAALnM567U' --费用科目编码在无部门清单中,为事业部费用,且费用发生公司为杭州:需分摊
    then '2' 
    when list.fid is not null --成本中心为杭州公司需要分摊的部门
    then '2' 
    else '3' end prtype,
    K.FNUMBER as SUBJECT_CODE,
    --  CBL.TYPE,
    D.FCOSTORGID costorgid,
    -- list.fid,
    A.FBookedDate as BookedDate/*AS 记账日期*/,
    a.fnumber as billnumber,
    B.FCOMPANYID AS comp/*公司*/,
    A.FBizStatus as BizStatus,
    a.FCREATORID as CREATORID, /*制单人id*/
    u.fname_l2 as creatorname, /*制单人名称*/
    b.FDESCRIPTION as DESCRIPTION, /*摘要*/
    b.FORIGINALAMOUNT as AMOUNT_FENLU /*分录金额*/,
    SUM(c.FORIGINALAMOUNT) AS AMOUNT_FUZHU /*辅助账金额*/,
    isnull(SUM(c.FORIGINALAMOUNT),b.FORIGINALAMOUNT) AMOUNTSUM,
    case when B.FCOMPANYID in ('XY4AAABg7NnM567U') then 0 else 1 end GLcount
    from  
    (
    select 
    A.FID, 
    A.FNumber as billnumber /*AS 单据编号*/,
    A.FBookedDate, 
    A.FNumber, 
    A.FBizStatus, 
    a.FCONTROLUNITID,
    A.FBookedDate as BookedDate/*AS 记账日期*/,
    a.FCREATORID
    from eas_T_GL_Voucher a 
    where left(CONVERT(VARCHAR(10),A.FBookedDate,120),4) >= '2021'
    and a.FPERIODID <> 'XY4AAACOSSuCOIxM'
    --  AND left(A.FBookedDate,7) = '2022-08'
    --  AND a.fnumber = '0031'
    ) a 
    LEFT JOIN eas_T_GL_VoucherEntry b on a.fid = b.FBILLID  collate Chinese_PRC_CS_AI
    LEFT JOIN [dbo].[EAS_T_BD_ACCOUNTVIEW] k on B.FAccountID = k.FID  collate Chinese_PRC_CS_AI
    LEFT JOIN FILL_FY_COSTBELONG CBL ON K.FNUMBER = CBL.SUBJECTCODE
    LEFT JOIN eas_t_gl_voucherassistrecord c on a.fid = c.FBILLID collate Chinese_PRC_CS_AI and b.fid = c.fentryid collate Chinese_PRC_CS_AI
    LEFT JOIN [dbo].[EAS_T_BD_ASSISTANTHG] d on c.FASSGRPID = d.FID collate Chinese_PRC_CS_AI
    left join AA list on D.FCOSTORGID = list.fid
    LEFT JOIN EAS_T_PM_USER U ON a.FCREATORID = U.FID 
    WHERE b.FENTRYDC='1'
    -- and c.FORIGINALAMOUNT is null
    GROUP BY 
    A.FID ,
    b.fid ,
    case 
    when CBL.TYPE = 1 --费用科目编码在无部门清单中,且为股份公司
    then '11' 
    when CBL.TYPE = 2 and B.FCOMPANYID <> 'XY4AAAAAALnM567U' --费用科目编码在无部门清单中,为事业部费用,且费用发生公司非杭州:按公司对应事业部
    then '12' 
    when CBL.TYPE = 2 and B.FCOMPANYID = 'XY4AAAAAALnM567U' --费用科目编码在无部门清单中,为事业部费用,且费用发生公司为杭州:需分摊
    then '2' 
    when list.fid is not null --成本中心为杭州公司需要分摊的部门
    then '2' 
    else '3' end ,
    K.FNUMBER ,
    --  CBL.TYPE,
    D.FCOSTORGID ,
    -- list.fid,
    A.FBookedDate ,
    a.fnumber ,
    B.FCOMPANYID ,
    A.FBizStatus,
    b.FORIGINALAMOUNT ,
    a.FCREATORID,
    u.fname_l2,
    b.FDESCRIPTION, /*摘要*/
    case when B.FCOMPANYID in ('XY4AAABg7NnM567U','XY4AAAACAkHM567U') then 0 else 1 end
    )
    ,C AS(
    -- 费用科目编码在无部门清单中做处理,prtype in ('11','12')
    select 
    '无归属部门费用' AS STATYPE,
    b.billid,
    b.entryid,
    b.comp/*公司*/,
    b.COSTORGID as costorg/*成本中心*/,
    b.BookedDate /*AS 记账日期*/,
    b.billnumber /*AS 单据编号*/,
    b.BizStatus /*AS 状态*/,
    B.CREATORID, /*制单人id*/
    B.creatorname, /*制单人名称*/
    b.DESCRIPTION, /*摘要*/
    b.AMOUNT_FENLU /*分录金额*/,
    b.AMOUNT_FUZHU /*辅助账金额*/,
    B.AMOUNTSUM,
    null as hz_prop,
    b.SUBJECT_CODE,
    CW.SUBJECT_NAME,
    CW.C_SUBJECT_NAME /*AS 财务科目*/,
    CW.COST_CODE /*AS 代码*/,
    CW.COST_NAME /*AS 费用项目*/,
    CW.STATEMENT_NAME /*AS 管理损益表费用项目*/,
    CW.BEHAVIOR_NAME /*AS 费用性态*/,
    CW.MANAGE_QIZHONG, /*管理损益表用其中成本*/
    CW.MANAGE_ITEM, /*管理损益表明细项目(除三类性态)*/
    CW.XISHU, /*明细项目正负标记*/
    case when CW.BEHAVIOR_NAME is not null and CW.C_SUBJECT_NAME is not null and b.comp <> 'XY4AAABg7NnM567U'  then 1 else 0 end as FYcount, /*费用分析表统计标志*/
    b.GLcount,
    null as costorgnumber,
    CASE WHEN b.prtype = '11'
    then '股份公司'
     when b.prtype = '12'
    then (select unit from FILL_DIM_UNIT where fid = b.comp)
    END SHIYEBU /*AS 所属事业部*/,
    null as FNAME, /*AS 成本中心名称*/
    null as COLLID,/*归集成本中心ID*/
    null as COLLNAME/*归集成本中心名称*/
    from  
    (select * from b where prtype in ('11','12') ) b
    left JOIN [dbo].[ODS_CHART_ACCOUNTS] CW  ON b.SUBJECT_CODE=CW.SUBJECT_CODE collate Chinese_PRC_CS_AI

    union all
    -- 杭州公司需要按收入比例分摊到对应事业部的费用,prtype = '2'
    select 
    '杭州公司需分摊费用' AS STATYPE,
    b.billid,
    b.entryid,
    b.comp/*公司*/,
    b.COSTORGID as costorg/*成本中心*/,
    b.BookedDate /*AS 记账日期*/,
    b.billnumber /*AS 单据编号*/,
    b.BizStatus /*AS 状态*/,
    B.CREATORID, /*制单人id*/
    B.creatorname, /*制单人名称*/
    b.DESCRIPTION, /*摘要*/
    b.AMOUNT_FENLU /*分录金额*/,
    b.AMOUNT_FUZHU /*辅助账金额*/,
    B.AMOUNTSUM*P.PROP AMOUNTSUM,
    P.PROP as hz_prop,
    b.SUBJECT_CODE,
    CW.SUBJECT_NAME,
    CW.C_SUBJECT_NAME /*AS 财务科目*/,
    CW.COST_CODE /*AS 代码*/,
    CW.COST_NAME /*AS 费用项目*/,
    CW.STATEMENT_NAME /*AS 管理损益表费用项目*/,
    CW.BEHAVIOR_NAME /*AS 费用性态*/,
    CW.MANAGE_QIZHONG, /*管理损益表用其中成本*/
    CW.MANAGE_ITEM, /*管理损益表明细项目(除三类性态)*/
    CW.XISHU, /*明细项目正负标记*/
    case when CW.BEHAVIOR_NAME is not null and CW.C_SUBJECT_NAME is not null and b.comp <> 'XY4AAABg7NnM567U'  then 1 else 0 end as FYcount,
    b.GLcount,
    CB.FNUMBER as costorgnumber,
    P.UNIT as SHIYEBU,
    O.FNAME, /*AS 成本中心名称*/
    O.COLLID,/*归集成本中心ID*/
    O.COLLNAME/*归集成本中心名称*/
    from  
    (select * from b where prtype = '2' ) b
    left JOIN [dbo].[ODS_CHART_ACCOUNTS] CW  ON b.SUBJECT_CODE=CW.SUBJECT_CODE collate Chinese_PRC_CS_AI
    LEFT JOIN [dbo].[EAS_T_ORG_BaseUnit] CB ON b.COSTORGID = CB.FID collate Chinese_PRC_CS_AI
    LEFT JOIN [dbo].[ODS_ORANZATION] O ON CB.FNUMBER=O.ID collate Chinese_PRC_CS_AI
    LEFT JOIN MID_FYFX_HZPROP P ON CONVERT(VARCHAR(7),BOOKEDDATE,120) = P.YM

    union all
    -- 正常所属事业部处理方式,prtype='3'
    select 
    '按成本中心归属费用' AS STATYPE,
    b.billid,
    b.entryid,
    b.comp/*公司*/,
    b.COSTORGID as costorg/*成本中心*/,
    b.BookedDate /*AS 记账日期*/,
    b.billnumber /*AS 单据编号*/,
    b.BizStatus /*AS 状态*/,
    B.CREATORID, /*制单人id*/
    B.creatorname, /*制单人名称*/
    b.DESCRIPTION, /*摘要*/
    b.AMOUNT_FENLU /*分录金额*/,
    b.AMOUNT_FUZHU /*辅助账金额*/,
    B.AMOUNTSUM,
    null as hz_prop,
    b.SUBJECT_CODE,
    CW.SUBJECT_NAME,
    CW.C_SUBJECT_NAME /*AS 财务科目*/,
    CW.COST_CODE /*AS 代码*/,
    CW.COST_NAME /*AS 费用项目*/,
    CW.STATEMENT_NAME /*AS 管理损益表费用项目*/,
    CW.BEHAVIOR_NAME /*AS 费用性态*/,
    CW.MANAGE_QIZHONG, /*管理损益表用其中成本*/
    CW.MANAGE_ITEM, /*管理损益表明细项目(除三类性态)*/
    CW.XISHU, /*明细项目正负标记*/
    case when CW.BEHAVIOR_NAME is not null and CW.C_SUBJECT_NAME is not null and b.comp <> 'XY4AAABg7NnM567U'  then 1 else 0 end as FYcount,
    b.GLcount,
    CB.FNUMBER as costorgnumber,
    O.UNIT  as SHIYEBU,
    O.FNAME, /*AS 成本中心名称*/
    O.COLLID,/*归集成本中心ID*/
    O.COLLNAME/*归集成本中心名称*/
    from  
    (select * from b where prtype = '3' ) b
    left JOIN [dbo].[ODS_CHART_ACCOUNTS] CW  ON b.SUBJECT_CODE=CW.SUBJECT_CODE collate Chinese_PRC_CS_AI
    LEFT JOIN [dbo].[EAS_T_ORG_BaseUnit] CB ON b.COSTORGID = CB.FID collate Chinese_PRC_CS_AI
    /*处理进仓费无成本中心的历史清单*/
    LEFT JOIN LIST_FY_COSTORG_HIS H ON B.BILLID = H.BILLID collate Chinese_PRC_CS_AI AND B.ENTRYID = H.ENTRYID collate Chinese_PRC_CS_AI
    LEFT JOIN [dbo].[ODS_ORANZATION] O ON ISNULL(CB.FNUMBER,H.COSTORGNUMBER) = O.ID collate Chinese_PRC_CS_AI
    )
    SELECT *,
    case when COLLID LIKE '04%' or(COLLID is null and comp = 'XY4AAAAAALnM567U') then '外贸' else  '内贸' end as TRADETYPE, --归集成本中心以04开头,或者归集成本中心为空且公司是杭州公司的,定义为外贸,其余为内贸
    case when SHIYEBU = '股份公司' then SHIYEBU WHEN SHIYEBU IS NULL THEN NULL--事业部为股份公司或九江,显示事业部名称
    else concat(SHIYEBU,case when COLLID LIKE '04%' or(COLLID is null and comp = 'XY4AAAAAALnM567U') then '外贸' else case when SHIYEBU = '九江' then '' else '内贸' end end ) end as SYBTRADETYPE --其余的事业部,将内外贸拼接上去,但九江内贸写为九江
     FROM C
    显示代码

    写入到已存在表:MID_FYFX_DETAIL

    写入的数据,即上面SQL处理后的数据:

    22.mp4


    EAS_T_ORG_BaseUnit:23.mp4  从EAS拿过来的全量表


    ODS_ORANZATION:不知道哪里的表

    最后一个字段:detype

    eas_T_GL_Voucher:24.mp4   (EAS拿过来的全量表)

    ODS_CHART_ACCOUNTS:

    EAS_T_ORG_BaseUnit: (EAS拿过来的全量表)

    ODS_ORANZATION:

    MID_FYFX_HZPROP:(杭州公司费用分摊系数计算)

    LIST_FY_COSTORG_HIS:

    25.mp4


    DW_FYFX_DETAIL

    SQL脚本:

    update DW_FYFX_DETAIL_ALTER 
    set shiyebu = b.unit,
       collid = b.collid,
      collname = b.collname,
      fname = b.fname 
    from ODS_ORANZATION b 
    where costorgnumber = b.id
     and b.unit is not null
     and len(b.unit) > 0
     and CONVERT ( VARCHAR ( 10 ), bookedDate, 120 ) >= '${MONTH}' ;

    update DW_FYFX_DETAIL_ALTER 
    set SUBJECT_NAME = b.SUBJECT_NAME,
      C_SUBJECT_NAME = b.C_SUBJECT_NAME,
      COST_CODE = b.COST_CODE,
      COST_NAME = b.COST_NAME,
      STATEMENT_NAME = b.STATEMENT_NAME,
      BEHAVIOR_NAME = b.BEHAVIOR_NAME,
      MANAGE_ITEM = b.MANAGE_ITEM,
      MANAGE_QIZHONG = b.MANAGE_QIZHONG,
      xishu = b.xishu
    from ODS_CHART_ACCOUNTS b 
    where DW_FYFX_DETAIL_ALTER.SUBJECT_CODE = b.SUBJECT_CODE
    and CONVERT ( VARCHAR ( 10 ), bookedDate, 120 ) >= '${MONTH}' ;
    --0222新增贸易类型和事业部贸易类型字段,修改逻辑与MID_FYFX_DETAIL任务一致
    update DW_FYFX_DETAIL_ALTER set TRADETYPE = case when COLLID LIKE '04%' or(COLLID is null and comp = 'XY4AAAAAALnM567U') then '外贸' else  '内贸' end 
    where CONVERT ( VARCHAR ( 10 ), bookedDate, 120 ) >= '${MONTH}' ;
    update DW_FYFX_DETAIL_ALTER set SYBTRADETYPE = case when SHIYEBU = '股份公司' then SHIYEBU WHEN SHIYEBU IS NULL THEN NULL--事业部为股份公司或九江,显示事业部名称
    else concat(SHIYEBU,case when COLLID LIKE '04%' or(COLLID is null and comp = 'XY4AAAAAALnM567U') then '外贸' else case when SHIYEBU = '九江' then '' else '内贸' end end )   end  
    where CONVERT ( VARCHAR ( 10 ), bookedDate, 120 ) >= '${MONTH}' ;

    显示代码

    DW_FYFX_DETAIL_ALTER :

    ODS_ORANZATION

    ODS_CHART_ACCOUNTS

    26.mp4


    SQL脚本:

    delete from DW_FYFX_DETAIL where convert(varchar(7),bookedDate,120) >= '${MONTH}'

    DW_FYFX_DETAIL:

    和下面的一起录了  27.mp4


    数据同步节点:

    SELECT
    a.STATYPE,
    a.billid,
    a.entryid,
    a.comp,
    a.costorg,
    a.BookedDate,
    a.billnumber,
    a.BizStatus,
    a.CREATORID,
    a.creatorname,
    a.DESCRIPTION,
    a.AMOUNT_FENLU,
    a.AMOUNT_FUZHU,
    a.AMOUNTSUM*(-1as AMOUNTSUM,
    a.hz_prop,
    b.SUBJECT_CODE,
    b.SUBJECT_NAME,
    concat(a.C_SUBJECT_NAME,'抵减') C_SUBJECT_NAME,
    b.COST_CODE,
    b.COST_NAME,
    b.STATEMENT_NAME,
    b.BEHAVIOR_NAME,
    a.FYcount,
    a.GLcount,
    a.costorgnumber,
    a.SHIYEBU,
    a.FNAME,
    a.COLLID,
    a.COLLNAME,
    b.MANAGE_QIZHONG,
    b.MANAGE_ITEM,
    b.XISHU, 
      a.TRADETYPE,--0222新增
      a.SYBTRADETYPE--0222新增
    FROM
    MID_FYFX_DETAIL a
    left join (select * from ODS_CHART_ACCOUNTS where SUBJECT_CODE = '5101.03') b on 1=1
    right join ODS_CHART_ACCOUNTS c on a.SUBJECT_CODE = c.SUBJECT_CODE
    WHERE
    a.SUBJECT_CODE LIKE '4102%'
    and CONVERT (VARCHAR(10),a.BookedDate,120) >= '${MONTH}'

    union all

    SELECT
    a.STATYPE,
    a.billid,
    a.entryid,
    a.comp,
    a.costorg,
    a.BookedDate,
    a.billnumber,
    a.BizStatus,
    a.CREATORID,
    a.creatorname,
    a.DESCRIPTION,
    a.AMOUNT_FENLU,
    a.AMOUNT_FUZHU,
    a.AMOUNTSUM*(-1as AMOUNTSUM,
    1 as hz_prop,
    b.SUBJECT_CODE,
    b.SUBJECT_NAME,
    concat(a.C_SUBJECT_NAME,'抵减') C_SUBJECT_NAME,
    b.COST_CODE,
    b.COST_NAME,
    b.STATEMENT_NAME,
    b.BEHAVIOR_NAME,
    a.FYcount,
    a.GLcount,
    a.costorgnumber,
    a.SHIYEBU,
    a.FNAME,
    a.COLLID,
    a.COLLNAME,
    b.MANAGE_QIZHONG,
    b.MANAGE_ITEM,
    b.XISHU ,
      a.TRADETYPE,--0222新增
      a.SYBTRADETYPE--0222新增
    FROM
    DW_FYFX_DETAIL_ALTER a
    left join (select * from ODS_CHART_ACCOUNTS where SUBJECT_CODE = '5101.03') b on 1=1
    right join ODS_CHART_ACCOUNTS c on a.SUBJECT_CODE = c.SUBJECT_CODE
    WHERE
    a.SUBJECT_CODE LIKE '4102%'
    and CONVERT (VARCHAR(10),a.BookedDate,120) >= '${MONTH}'


    union all

    SELECT
    a.STATYPE,
    a.billid,
    a.entryid,
    a.comp,
    a.costorg,
    a.BookedDate,
    a.billnumber,
    a.BizStatus,
    a.CREATORID,
    a.creatorname,
    a.DESCRIPTION,
    a.AMOUNT_FENLU,
    a.AMOUNT_FUZHU,
    a.AMOUNTSUM,
    a.hz_prop,
    a.SUBJECT_CODE,
    a.SUBJECT_NAME,
    a.C_SUBJECT_NAME,
    a.COST_CODE,
    a.COST_NAME,
    a.STATEMENT_NAME,
    a.BEHAVIOR_NAME,
    a.FYcount,
    a.GLcount,
    a.costorgnumber,
    a.SHIYEBU,
    a.FNAME,
    a.COLLID,
    a.COLLNAME,
    a.MANAGE_QIZHONG,
    a.MANAGE_ITEM,
    a.XISHU ,
      a.TRADETYPE,--0222新增
      a.SYBTRADETYPE--0222新增
    FROM
    MID_FYFX_DETAIL a
    where CONVERT (VARCHAR(10),a.BookedDate,120) >= '${MONTH}'

    UNION ALL

    SELECT
    a.STATYPE,
    a.billid,
    a.entryid,
    a.comp,
    a.costorg,
    a.BookedDate,
    a.billnumber,
    a.BizStatus,
    a.CREATORID,
    a.creatorname,
    a.DESCRIPTION,
    a.AMOUNT_FENLU,
    a.AMOUNT_FUZHU,
    a.AMOUNTSUM,
    null as hz_prop,
    a.SUBJECT_CODE,
    a.SUBJECT_NAME,
    a.C_SUBJECT_NAME,
    a.COST_CODE,
    a.COST_NAME,
    a.STATEMENT_NAME,
    a.BEHAVIOR_NAME,
    a.FYcount,
    a.GLcount,
    a.costorgnumber,
    a.SHIYEBU,
    a.FNAME,
    a.COLLID,
    a.COLLNAME,
    a.MANAGE_QIZHONG,
    a.MANAGE_ITEM,
    a.XISHU ,
      a.TRADETYPE,--0222新增
      a.SYBTRADETYPE--0222新增
    FROM
    DW_FYFX_DETAIL_ALTER a
        where CONVERT (VARCHAR(10),a.BookedDate,120) >= '${MONTH}'
    显示代码

    MID_FYFX_DETAIL

    ODS_CHART_ACCOUNTS

    ODS_CHART_ACCOUNTS

    DW_FYFX_DETAIL_ALTER



    数据去向写入到:

    SQL SERVER FR  DW_FYFX_DETAIL(已存在表)

    写入方式报错了,没法看

    至此,费用付分析结束

    损益表牵制处理

    先不看











    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!