数据库自连接查询在审计工作中的运用
任晓波(内蒙古自治区包头市审计局)
【发布时间:2016年09月18日】
字号:【大】 【中】 【小】

数据库中的SQL语句是现实数据库查询的重要手段,自连接是数据库中一种特殊的内连接,指相互连接的表在物理上表现为同一张表,但在逻辑上却可分为两张表。如,在对某单位进行财务数据审计时,该单位所使用的用友财务软件中有一张会计凭证表:gl_accvouch,该表有会计期间(iperiod)、凭证类型(csign)、凭证号(ino_id)、贷方金额(mc)等字段,其中一个审计事项是计算各月应收回的销售欠款(应收账款),用SQL语句中的自连接查询实现语法如下:

select a.iperiod,sum(a.mc)

from gl_accvouch a

join gl_accvouch b

On a.iperiod=b.iperiod and a.csign=b.csign and a.ino_id=b.ino_id

where (a.ccode like '113%'and a.mc>0)-113(代表应收账款科目)

and ((b.ccode like '102%'and b.md>0)-102(代表银行存款科目

or (b.ccode='101'and b.md>0))-101代表现金科目)

group by a.iperiod

通过以上的自连接查询,可以很简便的得到所需要的审计结果,而且在很大程度上提高了SQL语句的运行效率。

再如,用友财务软件中存储会计科目的表科目代码表code,该表中有科目代码(ccode),科目名称(ccode_name)等字段,现需要对该表中的数据进行整理,将表中的二级和三级科目整理成所在一级科目下,方便审计查看。该科目代码表中原数据显示如下:

通过SQL语句自连接查询,可将数据显示如下结果:

由此看出,通过自连接查询实现了数据整合的功能,不仅方便审计人员查看会计科目,更充分发挥计算机审计在会计审计中的作用。具体SQL自连接查询语法如下:

select km.ccode,ccode_name=k1.ccode_name +

case when len(km.ccode)>3 then '\'+k2.ccode_name else '' end+case when len(km.ccode)>5 then '\'+k3.ccode_name else '' end

from code km join code k1 on left(km.ccode,3)=k1.ccode

join code k2 on left(km.ccode,5)=k2.ccode

join code k3 on left(km.ccode,7)=k3.ccode

(任晓波)

【关闭】    【打印】