基于SQL语句的全样本数字化审计示例分析
2020-03-23蔡真捷王向
蔡真捷 王向
[摘要]在当前大数据时代背景下,利用数字化审计手段对海量数据开展全样本分析已经成为审计发展的必然趋势。本文以差旅费报销和劳务分包审计为例,探索总结审计人员借助SQL语句的统计、分类等功能,对审计的全样本数据进行整体分析,从而快速发现线索、锁定审计疑点的具体方法。
[关键词]全样本 数字化审计 SQL语句 差旅费 劳务分包
在科技发展日新月异的今天,企业各类数据信息以几何级数增长,有效利用数字化审计手段,使抽样审计逐步向全样本分析转变,减少因审计抽样不足导致的局限性,才能更好地发挥审计作用,服务企业改革发展,提升经营管理水平。SQL语句作为一种高级逻辑语言,能够按照审计人员的想法快速精准地对海量数据进行分类、统计和分析,无疑是帮助审计人员对大数据“抽丝剥茧”、快速锁定审计疑点的强劲“武器”。
一、差旅费报销
(一)总体思路
首先,通过财务系统导出被审计单位A公司的差旅费明细账,了解该单位差旅费报销的总体情况并进行初步分析;其次,根据分析情况编写SQL语句,按照一定的逻辑顺序对差旅费明细账中的所有报销记录进行分类、排序并生成数据分析表;最后,根据数据分析表中的信息,总结出A公司差旅费报销的规律,锁定审计疑点。
(二)具体步骤
1.导出差旅费明细账。导出的A公司2016—2017年差旅费明细账中有近千条报销记录,从报销摘要和报销金额来看,部分部门的差旅费中报销了大量下乡补贴,该部分下乡补贴报销金额相近且均为整数。针对这一疑点,审计人员以差旅费明细账中所有的报销记录为全样本,通过SQL语句将全样本中的信息归类汇总,分析潜在的规律性。
2.运用可视化工具PLSQL编写SQL分析语句。将A公司差旅费明细账中的报销记录按摘要中特定字段的相似度进行汇总,按记录条数进行计数,按报销金额进行排序,具体如下:
第一步,对差旅费明细账格式进行调整,只保留月份、凭证号、摘要和金额四个维度的信息,将数据导入Oracle数据库,创建数据信息表,相关语句如下:
-- Create table
create table CLF_2016
(CL_MONTH VARCHAR2(32),
PZNO VARCHAR2(32),
CL_DESC VARCHAR2(1000),
AMT NUMBER(16))
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage (initial 64
minextents 1
maxextents unlimited);
-- Add comments to the table
comment on table CLF_2016 is '差旅费';
-- Add comments to the columns
comment on column CLF_2016.CL_MONTH is '月份';
comment on column CLF_2016.PZNO is '凭证号';
comment on column CLF_2016.CL_DESC is '摘要';
comment on column CLF_2016.AMT is '金额';
第二步,从数据信息表中提取摘要、总金额等2列数据,并计数生成临时表。
第三步,从数据信息表中提取摘要、月份、凭证号等3列数据,筛选出摘要列中带有“报销”文字的字段,生成另一个临时表。
第四步,将两张临时表中的数据合并,首先按摘要列中“中国”至“单号”字段的文字相似度进行汇总,其次按金额进行排序,最后对数据去重。相关语句如下:
select distinct t.cl_month 月份,
t.pzno 凭证号,
t.cl_desc 摘要,
t.amtSum 总金额,
t.amtCount 次数
from (
select distinct t1.cl_month,
t1.pzno,
nvl(substr(t2.cl_desc, 0, instr
(t2.cl_desc, '報销:', 1, 1) - 1),
t2.cl_desc) cl_desc_sort,
t2.amtSum,
t2.cl_desc,
t2.amtCount
from clf_2016 t1,
(select t.cl_desc, sum(t.amt) amtSum, count(t.amt) amtCount
from clf_2016 t
group by t.cl_desc) t2
where t1.cl_desc = t2.cl_desc
) t order by t.cl_desc_sort , t.amtsum
生成数据分析表,如图1所示。
3.数据分析。通过观察数据分析表,发现A公司部分部门有规律性地分月度按照一定金额报销部门下乡补贴。审计人员将该部分存在异常情况的差旅费报销记录作为重要审计疑点,进行进一步分析核实。首先,导出A公司人资ERP系统2016—2017年每月人员花名册,筛选统计各部门职工年度平均人数;其次,将各部门年度平均人数与该部门当年报销的下乡补贴总金额进行比对,按年度分部门计算2016—2017年报销的下乡补贴人均金额。经统计,A公司部分部门2016年度人均下乡补贴报销金额为每月390—409元,2017年报销了9个月的差旅费补贴,人均每月231—242元。
(三)审计核实
针对上述情况,审计人员翻阅A公司2016—2017年差旅费报销的相关会计凭证,核对公司部门(班组)周例会记录、出差派车单记录,并分别询问报销人员和负责人,了解到由于政府分配的精准扶贫工作及其他日常性工作需要,部分部门确实存在比较多的下乡情况。2016年对各部门以每人每月400元包干的形式报销下乡补贴,没有按照实际出差情况报销差旅补助,存在部分虚报及在成本中列支薪酬性支出的问题。2017年根据上级单位的检查要求,对差旅费报销进行整改,因此只报销了1—9月的下乡补贴,标准降至每人每月240元。
二、劳务分包
(一)总体思路
首先,导出被审计单位C公司的合同清单,分析施工单位B公司承揽C公司工程项目比例,确定B公司承揽项目为重点审计项目;其次,通过延伸审计导出B公司项目的成本情况,设计SQL语句对项目成本进行分析,查找出仅有分包成本而无其他成本的项目清单;再次,针对这些仅有分包成本的项目,导出对应的项目收入明细;最后,将该部分仅有分包成本的项目与所取得的收入情况建立中间表,运用SQL语句进行分析,计算分包费用比例,锁定工程转包疑点。
(二)具体步骤
1.分析被审计单位发包给B公司的工程项目情况:
第一步,通过合同管理系统导出2017年C公司所签订的工程项目合同清单。
第二步,在导出的合同清单Excel中,合同类型一栏勾选“工程建设类合同”“运维检修类合同”,合同单位一栏勾选B公司,将C公司发包给B公司的各类工程项目合同筛选出来。
第三步,进行数据汇总对比分析。经统计,C公司2017年发包给B公司的各类工程项目总金额为9355万元,将该类工程项目合同作为重点审计对象。
2.分析B公司项目成本情况:
第一步,通过财务系统导出B公司项目成本财务明细账。
第二步,将导出的数据在Oracle数据库中创建财务信息明细表,相关语句如下:
create table SJ_ACCOUNT_INFO
( ACDATE VARCHAR2(50),
PZNO VARCHAR2(50),
ACDESC VARCHAR2(1000),
BASEAMT NUMBER(14,2),
MLAMT NUMBER(14,2),
JJAMT NUMBER(14,2) )
-- Add comments to the table
comment on table SJ_ACCOUNT_INFO is '财务信息表';
-- Add comments to the columns
comment on column SJ_ACCOUNT_INFO.ACDATE is '日期';
comment on column SJ_ACCOUNT_INFO.PZNO is '憑证编号';
comment on column SJ_ACCOUNT_INFO.ACDESC is '摘要';
comment on column SJ_ACCOUNT_INFO.BASEAMT is '合同成本';
comment on column SJ_ACCOUNT_INFO.MLAMT is '合同毛利';
comment on column SJ_ACCOUNT_INFO.JJAMT is '间接费用';
第三步,运用可视化操作工具PLSQL编写SQL语句进行统计,筛选出项目成本中仅有分包成本、无其他项目成本的项目清单,得出审计中间表。具体语句如下:
select t.acdate 日期,
t.pzno 凭证编号,
t.acdesc 摘要,
t.baseamt 合同成本,
t.mlamt 合同毛利,
t.jjamt 间接费用,
t.baseamt + t.mlamt + t.jjamt 合计
from (select t.acdate,
t.pzno,
t.acdesc,
nvl(t.baseamt, 0) baseamt,
nvl(t.mlamt, 0) mlamt,
nvl(t.jjamt, 0) jjamt
from sj_account_info t) t
where t.baseamt > 0
and t.mlamt = 0
and t.jjamt = 0
經分析,B公司2017年仅有分包成本,无其他成本的工程项目共338个。
3.利用Oracle数据库工具创建数据库表,分析B公司承揽C公司工程项目的收入与成本情况:
第一步,创建项目收入信息表,具体语句如下:
create table 项目收入表
( 序号 NUMBER(16),
项目责任单位 VARCHAR2(200),
批次 VARCHAR2(200),
项目名称 VARCHAR2(2000),
项目收入 NUMBER(12,4),
备注 VARCHAR2(200) )
第二步,创建项目成本信息表,具体语句如下:
create table 项目分包成本表
( 序号 NUMBER(16),
项目责任单位 VARCHAR2(200),
项目名称 VARCHAR2(2000),
分包成本 NUMBER(16,2),
分包单位 VARCHAR2(200),
备注 VARCHAR2(2000) )
第三步,运用可视化工具PLSQL进行SQL语句编写,将第一步和第二步分别创建的项目收入信息表和项目成本信息表通过项目名称进行关联查询,得出中间表。具体语句如下:
select a.序号,
a.项目责任单位,
a.项目名称,
a.项目收入,
b.分包成本,
round(b.分包成本 / a.项目收入, 2) 分包所占比
from 项目收入表 a, 项目分包成本表 b
where a.项目名称 = b.项目名称
第四步,分析统计表,将B公司承揽项目的收入与成本支出进行对比,得出分包金额与收入成一定比例,且比例大致一致,在0.8—0.9之间,超过劳务分包费用所占的合理比例范围。
4.审计核实。现场抽查该企业承揽的项目,查询项目招投标资料、收入合同、分包合同、工程结算等资料。经核实发现,B公司承接业务后与分包单位签订劳务分包合同,劳务分包合同内容涵盖该工程全部内容,与承揽合同内容一致;项目招投标资料包括构成工程实体的材料、主要施工机械供应、安全生产费用等非劳务作业内容,而B公司仅有劳务分包成本,无其他非劳务作业成本,且分包费用为工程项目所有成本支出;进一步询问B公司相关人员项目的材料、机械、安全生产费用的列支情况,B公司人员承认由劳务分包方承担了材料采购、机械供应、安全生产等费用。可见,B公司通过劳务分包形式变相将工程整体转包。
(作者单位:国网湖南省电力有限公司,邮政编码:410004,电子邮箱:776721444@qq.com)