用FULL JOIN全连接语句合并科目编码不一致的多年余额表的方法

作 者:

作者简介:
张金芳,延吉市审计局

原文出处:
当代审计

内容提要:

02


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

关 键 词:

字号:

      全连接的含义是不管表1和表2的元组是否满足连接条件,均输出表1和表2的内容;如果是在连接条件上匹配的元组,则另一个表返回相应值,否则另一个表返回值。

      在被审计单位不同年度余额表的科目编码发生变化时,为了在总体上把握多个年度的总账余额变化情况,在SQL中可以使用FULL JOIN全连接语句,将科目编码不一致的余额表,合并在同一张表上。具体做法:

      1.首先将2012-2015年的EXCEL余额表导入SQL,在导入前注意将字段名称标注年度,以便在合并后的总表上加以区别。

      2.先用full join将2012、2013两个年度的余额表全连接:select a2.*,a3.* from a2 full join a3 on a2.科目编码2012=a3.科目编码2013,浏览查询结果后发现,既有2012年有2013年无的科目编码,又有2013年有2012年无的科目编码。

      3.在全连接后生成的表中建立新列,取这两个年度科目编码不为空的值为新列的值。同样的方法建立科目名称新列,用CASE语句来完成。

      select(case when a2.科目编码2012IS NULL then a3.科目编码2013

      else a2.科目编码2012 end)as fullbianma,(case when a2.科目名称2012 IS NULL then a3.科目名称2013else a2.科目名称2012 end)as fullmc,a2.*,a3.* into a23 from a2 full join a3 on a2.科目编码2012=a3.科目编码2013

      4.由于全连接一般只能在两张表上进行,用同样的方法分别再与2014、2015年度的余额表合并。

      select(case when fullbianma IS NU LL then a4.科目编码2014

      else fullbianma end)as fullbianma1,

      (case when fullmc IS NULL then a4.科目名称2014

      else fullmc end)as fullmc1,aa23.*,a4.* into aa234

      from aa23 full join a4 on aa23 fullbianma=a4.科目编码2014

      select(case when fullbianma1 IS NULL then a5.科目编码2015

      else fullbianma1 end)as fullbianma2,

      (case when fullmc1 IS NULL then a5.科目名称2015

      else fullmc1 end)as fullmc2,aa234.*,a5.* into aa2345

      from aa234 full join a5 on aa234.fullbianma=a5.科目编码2015

      5.去除总表aa234的冗余字段fullbianma、fullbianma1、fullmc、fullmc1。

相关文章: