审计的数据透视分析方法

作 者:
柯锐 

作者简介:
柯锐,红安县审计局

原文出处:
审计月刊

内容提要:


期刊代号:V3
分类名称:审计文摘
复印期号:2015 年 11 期

关 键 词:

字号:

      审计过程中经常需要对数据进行分析,数据透视是最常用的分析方法之一。数据透视(pivoting)是将数据从行状态旋转为列状态的一种处理,在这个过程中可能需要对数值进行聚合等操作。为了能直观地展现这一方法,笔者以某地区2014年税收征管模拟数据为例,使用SQL Server介绍数据透视方法。

      模拟数据为“纳税明细”表,该数据表共有11万多条记录,详细地反映了各种税款征收入库情况,以下通过数据透视技术反映每月各种税款征收情况,即以税种为行,月份为列计算入库税款。根据SQL语句构建的动态性,数据透视方法分为静态技术与动态技术。

      一、静态技术

      直接使用SQL Server中的模板构建语句:

      

      以上方法应于SQL Server 2005(含)以上版本中运行,为了使列名直观,使用了串连字符。如果不考虑版本的限制则应编写以下语句:

      

      运行结果与前一种方法完全一致。很显然第一种方法代码简洁易读,后一种方法代码冗长,在透视的列包含较多的唯一值时更是如此。但两者在性能上没有实质区别,其共同点要求事先知道生成的列包含哪些月份。

      上述第一种方法可作为模板使用,也是微软推荐使用的方法,灵活性较好。假设按纳税人识别号、名称展示每种税款的入库情况,只需修改模板即可,示例代码如下:

      SELECT*

      (SELECT纳税人识别号,纳税人名称,征收项目,实

      

      这个模板的应用有个小技巧,FROM子句中应采用子查询方式仅反映需求的信息,本例中包含纳税人识别号、纳税人名称、实缴税额、征收项目四列,PIVOT子句中未使用的列(即纳税人识别号及纳税人名称)作为分组,主查询中直接使用“*”即可。

      二、动态技术

      在事先不清楚生成的列包含哪些月份的情况下,构建动态代码则十分必要。

      

      以静态代码第一种方法为例,先动态构建月份字符串,然后拼接整体SQL语句,最后调用系统存储过程执行SQL语句字符串,产生的结果相同。

      此外,Excel中提供的数据透视表功能与此类似,仅需将相应的字段拖到指定的区域(包括筛选器、行、列、值),并按要求指定数值计算方式即可。ACCESS则采用交叉表查询向导实现,使用起来都非常直观、方便,审计人员可根据实际情况选用。

相关文章: