巧用SQL语句为会计科目表“瘦身”后生成AO辅助账
覃业荣(湖北省建始县审计局)
【发布时间:2011年04月14日】
字号:【大】 【中】 【小】
    在利用“原始科目代码+辅助核算代码=新科目代码”的组合方法重新生成科目表、余额表、凭证表导入AO生成辅助明细账时,如果进行了辅助核算的科目较多,每个科目都要与辅助核算代码逐个组合 生成新的会计科目,数量成倍增长,其中会生成很多冗余科目(审计不需要科目,当年没有期初余额和发生额),如果不从“新科目表”中剔除这部分冗余科目,在账表重建时,易造成电脑死机现象,影响运行速度和效率,同时大量冗余科目的存在也影响审计人员对辅助明细账查询。本文简单介绍在生成“新科目表”时,巧用SQL语句剔除大量的冗余科目后再导入生成辅助账,从而大大提高账表重建的速度和审计人员的审查效率。
    一、审计需要的数据表
    以非税收入管理局使用的同步远方6.0财务核算软件为例,数据库采用SQL Server 2000。由于基层财政部门非税收入的复杂性,有很多科目又采用了部门辅助核算形式。原会计科目代码的长度为3-2-2形式,简化辅助核算代码长度为2-2形式。
    1、原会计科目表(glacnt)、原科目余额表(glacntr)、原凭证表(glvch)、原部门核算代码表(gldpt);
    2、利用“原始科目代码+辅助核算代码=新科目代码”的组合方法重新生成新会计科目表(a_glacnt)、新科目余额表(a_glacntr)、新凭证表(a_glvch)。
    二、去掉会计科目表(a_glacnt)中冗余科目的方法
    1、先从原凭证库(glvch)中找出有哪些“科目”采用部门辅助核算形式,部门辅助核算代码的最大、最小长度,并保存好结果备用,参考语句:
    Use fs2010
    select distinct FCode,FDptco from dbo.glvch  where FDptco  not like''
    select max(len(FDptco))  from dbo.glvch   where FDptco  not like''
    select min(len(FDptco))  from  dbo.glvch  where FDptco  not like''
    注:FCode为科目编码,FDptco部门辅助核算编码,未进行部门核算的“部门辅助核算编码”字段为空。通过以上查询可知进行部门核算的科目有40多个,科目长度3-2-2形式,假定部门核算代码最大长度为4,最小长度为2,即为2-2形式。
    2、生成临时科目代码表(a_ glacnt01)
    因进行部门辅助核算的一、二、三级会计科目有很多(以我县非税收入财务核算为例),采用“原科目代码+辅助核算代码=新科目代码”的组合方法重新生成“临时科目代码表(a_ glacnt01)”,参考语句:
    select FCode ,FDesc  into a_ glacnt01   from  dbo.glacnt
    union
    select '10508'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '20301'+xCode  as kmdm,FDesc  from gldpt
    union
    select '20302'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '20320'+xCode  as kmdm,FDesc  from gldpt
    union
    select '301'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '40132'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40133'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '40135'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '40142'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '4014303'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '402'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '403'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '40401'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40402'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40404'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40406'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '40501'+xCode  as kmdm,FDesc  from   gldpt 
    union
    select '40502'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40503'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40507'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '40509'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40511'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40512'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40599'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40603'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40702'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40705'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '40707'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '49901'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '49905'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '49999'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '501'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '50201'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '50202'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '50203'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '5020401'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '5020402'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '5020403'+xCode  as kmdm,FDesc  from  gldpt 
    union
    select '5020407'+xCode  as kmdm,FDesc  from  gldpt
    union
    select '5020409'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '5020411'+xCode  as kmdm,FDesc  from   gldpt 
    union
    select '5020412'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '5020499'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '50205'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '50206'+xCode  as kmdm,FDesc  from   gldpt
    union
    select '599'+xCode  as kmdm,FDesc  from   gldpt
    注:glacnt为原会计科目表,以上的辅助核算具体科目以第一步从凭证中查询得到的结果为准。
    3、合并当年科目余额表(a_glacntr)、凭证表(a_glvch)中的会计科目,生成临时科目代码表(a_ glacnt02),参考语句:
    select distinct FCode as FCode into a_ glacnt02  from a_glvch
     union
    select  FCode from  a_glacntr
    注:科目余额表(a_glacntr)、凭证表(a_glvch)中的会计科目已采用“原科目代码+辅助核算代码=新科目代码”的组合方法重新生成。
    4、按照3-2-2-2的规则重新规划生成“临时会计科目代码表(a_glacnt03)”,参考语句:
    select FCode=substring(b.FCode,1,3) into a_ glacnt03 from a_ a_glacnt02  b
    union
    select FCode=substring(b.FCode,1,5) from  a_glacnt02  b
    union
    select FCode=substring(b.FCode,1,7) from   a_glacnt02  b
    union
    select FCode=substring(b.FCode,1,9)  from  a_glacnt02  b
    union
    select FCode=substring(b.FCode,1,11) from  a_glacnt02  b
    union
    select FCode=substring(b.FCode,1,13) from  a_glacnt02  b
    5、去除临时科目代码表(a_ glacnt01)中的冗余科目,生成新的科目余额表(a_ glacnt)
    select  FCode,FDesc ,fx=case
     when left(FCode,1)=1 or left(FCode,1)=5 then '借'else '贷' end
      into a_ glacnt from a_glacnt01 where FCode in (select FCode from a_glacnt 03)
     order by FCode
    6、删除临时会计科目表a_ glacnt01、a_ glacnt02、a_ glacnt03,参考语句:
    drop table  a_ glacnt01,a_ glacnt02,a_ glacnt03
    四、导入AO生成辅助明细账
    将上述整理后的新会计科目表(a_glacnt)、新科目余额表(a_glacntr)、新凭证表(a_glvch),通过“采集转换—财务软件数据库数据”导入AO生成辅助账,从而大大提高账表重建的速度和审计人员的审查效率。(覃业荣)



【关闭】    【打印】