数据库中的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
(任晓波)
【关闭】 【打印】 |