试谈审计模式下常用的sql查询语句示例_第1页
试谈审计模式下常用的sql查询语句示例_第2页
试谈审计模式下常用的sql查询语句示例_第3页
试谈审计模式下常用的sql查询语句示例_第4页
试谈审计模式下常用的sql查询语句示例_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

审计模式下常用的SQL查询语句示例随着信息技术的不断发展,被审计对象的财务和业务系统也大多使用了专用软件进行计算机管理,如果暂不考虑计算机软硬件本身的系统审计,那么我们所面对的审计也就分为了以财务账套为基础的账套式审计模式和直接对数据本身(包括财务数据和业务数据)审计的数据式审计模式。但不论是何种审计模式,最根本的还是要使用计算机语句对具体问题进行查询分析,即通过数据库的SQL查询语句对数据库中的数据表进行查询分析。 虽然SQL语句的功能很多,且不同数据库环境下的具体使用也会因为所遵循的官方标准不同而略有差别,但多数情况下的使用是相通的。同时因为审计工作的特点,所使用的SQL语句也多是对数据的查询,一般并不会包括对原始数据的增加、删除、修改等操作,所以在计算机审计中重点需要掌握的内容就是灵活利用SQL语句的查询功能。实际审计工作当中,在数据审计模式下我们所常用的是如下所示的语句,也是从实际审计工作中收集出具有代表性的语句,并且所有语句都基于Access数据库,在AO现场审计实施系统中可正常使用。 一、对单个表的条件查询,用where指定查询条件,也有不使用where的情况,多用于对原始表的统计、分类等 该类情况下SQL语句的语法是“select * from 表名 where 条件”。可以指定单个条件或多个条件,并可配合其他函数或关键字使用,常用到的类型有如下几类。 (一)对单个条件的简单查询: select * from 存款表 where 金额=; 该情况的使用较为简单,适用于任何单条件查询。 (二)对多个条件的查询,各条件间可能是and或or的关系: select * from 存款表 where金额= and 存款时间 = #2006-1-1#; 该情况常用于对多个条件的查询,根据关键字and或or来决定是同时满足所有条件还是仅满足某些条件。 (三)对多个条件的查询,得到符合条件的某字段的合计值: select sum(金额) from 存款表 where金额= and 存款时间 = #2006-1-1# and 存款时间=; select max(发生金额) from 存款表; select avg(发生金额) from 存款表; 该情况类似于上面求和函数的使用,可根据具体需求进行应用。 (五)对关键字的内容进行查询: select * from 凭证表 where 摘要 like %招待费%; 该情况较为常用,查询包含某些关键字的所有记录,也可结合关键字and或or等查询多个条件。 (六)查询内容是否包含在给定的范围内: select * from 科目代码表 where 科目代码 in (101,102); 该情况用于所关心的字段包含内容类别较少的情况,常用在已基本确定查询范围之后。当所关心内容类别较多时可使用下面将提到的两张表的嵌套查询。 (七)对某个字段进行分组,查询各字段属性分别对应的发生次数,并按发生次数进行排序: select 款项代码, count(款项代码) as 次数from大额现金支取表 group by 款项代码 order by count(款项代码) desc; 该情况常用于对某个所关心字段的分类统计,得出每个类别所发生的次数,并可按发生次数进行排序。 (八)按某个字段的长度进行分类并进行排序: select len(科目代码) as 发生次数from 科目代码表 group by len(科目代码) order by len(科目代码) desc; 该情况用于了解某字段的长度分组情况,可对所取得的原始数据进行验证,以证实原始数据的规范性或找出不规范情况的问题所在。 (九)分组查询,group与having联用: select 客户号,count(*) as 发生次数 from 存款表 where 发生金额= group by 客户号 having count(*)1; 该类语句常用于要列出所关心某字段的某一个或几个条件限制下发生次数超出某范围的情况。如查询发生多次(即同一关键字发生的记录数大于1)大额存取的客户号及其存取次数,查询结果按客户号分组。 以上各类对单个表的查询结果并未直接存储成新表,不利于对查询结果的进一步分析利用,我们可以使用“select * into 新表名 from 表名 where 条件”这种语句格式把查询结果保存成新表,如 select * into 大额存款发生情况表 from 存款表 where 金额=; 二、对多个表的条件查询,一般需根据各表的相应关键字进行连接 这种情况下必须对各表的对应关键字进行关联,一般情况下是对两张表的关联查询,当有更多张表要操作时可以每次对两张表操作后再和剩余的表关联操作,也可以扩展SQL语句同时对两个以上的表操作,以下只列出对两张表操作的情况。 (一)两张结构相同的表合并并生成新表,使用关键字union进行联合查询: select * into 中间表 from (select * from 原始表1 union select * from 原始表2); 该情况常用于对多个原始表的整理以生成中间表,便于后续的查询工作。如合并采集到的原始数据,将原本分月存储的数据表全并成分年度存储的数据表。 (二)两张表的连接,生成新的中间表: select a.*,b.客户名称into 含客户名称的现金支取表 from现金支取表 as a, 客户基本信息表 as b where a.款项代码=b.款项代码; 使用该类语句的前提是两张表存在相关联的关键字,常用于一张表根据两表的连接关键字引入另一张表的某些字段,为后续的查询准备好中间表。其中使用别名可以简化SQL语句的输入。如财务数据中采集到的凭证表是两张表时,可连接两表引入摘要字段等。 (三)两张表的关联查询,可加入多个条件: select a.*,b.科目代码 from 对公活期存款明细表 as a, 活期存款账户动态表 as b where a.款项代码=b.款项代码 and 科目代码 like 201%; 该情况可看作对两张表连接的扩展,即根据where所限定的条件来对两张表关联查询。 (四)两张表的嵌套查询,两层查询间要使用关键字in: select * into频繁发生大额现金支取 from大额现金支取 where 交易金额= and 款项代码 in ( select 款项代码 from款项代码发生次数_大额现金支取 where 次数 = 10 ) order by 款项代码,交易金额,记账日期; 这种情况也可理解为简单查询,不同的是其中where所指定的某个条件是由另一张表的又一个查询所指定的,与单表查询的语句 select * from 科目代码表 where 科目代码 in (101,102); 进行对比后发现,可将两张表的嵌套查询看作如上语句的扩展。如利用大额现金支取表和大额现金支取的款项代码发生次数表查询交易金额大且发生次数多的情况。再比如利用贷款表和股东表查询贷款表中含股东贷款的情况。 (五)多表的连接操作 多表连接可分为内连接、外连接、自身连接、交叉连接。其中内连接又分为等值连接、不等连接和自然连接,外连接又分为左连接、右连接和全连接。实际审计工作当中所用到的多是内连接与外连接,较少用到自身连接与交叉连接。多表的连接使用需根据具体情况而定,下面列出部分示例。 .内连接的等值连接: select * from 存款表 as a inner join 客户信息表 as b on a.款项代码=b.款项代码; 以上语句用于列出存款表和客户信息表中款项代码相同的记录。 .外连接的左连接。 select * from 存款表 as a left join 客户信息表 as b on a.款项代码=b.款项代码; 左连接的特点是显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。右连接与此类似,其特点是显示全部右边表中的所有项目,甚至是左边表中没有和它匹配的记录。 以上列出的是数据审计模式下根据实际工作总结出的常用SQL语句,虽然所列内容并不全面,更不可能完全体现SQL查询的全面功能与精妙所在,但只要能够很好地分析出审计需求,把用自然语言表达的审计思路转化为计算机的SQL查询语句,并结合以上的常用语句适当组合运用,一定能使数据审计模式下的工作达到事半功倍的效果,更好地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论