利用SQL数据库使得奖金发放更简单
[摘 要] 随着信息技术的日益发展,在高校的财务工作中,会计电算化已经逐步替代手工会计,它对提高工作效率、规范财务工作起到了至关重要的作用。本文就如何运用SQL数据库技术来简化财务人员在奖金发放中的工作程序,从而实现快速、准确地将各个部门分散的奖金发放表汇总为一张总表,最终使得奖金发放工作变得简单起来进行分析。
[关键词] 奖金发放;汇总;SQL;表
在财务部门的日常工作中,经常会遇到这样的情况:每逢奖金发放时刻,同样的发放方案,各个部门所涉及的人员不尽相同,奖金的项目也大不相同。以高校为例,如某位老师既做班主任又有任课还兼行政,那么就可能存在所在班级的系部做班主任费,所任课的系部做课时费,所兼职的行政部门做岗位津贴费,一个人要在3个部门3张表上反映的情况。财务部门如何在最短的时间内准确地将各部门分散的发放表汇总为一张总表,是迫切需要解决的问题。如果采用Excel手工操作的办法,人少的单位还可以,无非多花费点时间,将若干表输入到一张表中,从而计算出每个人的应发数额。但是对于一个拥有成百上千甚至是几千人的大单位来说,这种方法就暴露出了它自身的弱点,不仅费时、费力,而且极易出错。笔者在高校财务工作实践中
逐渐摸索出利用SQL数据库将若干张表合并成为一张新表的方法,能够使财务人员从繁重的数字堆中解脱出来,从而快速计算出每个人的奖金发放金额。
一、 建立Excel表模型
先将各部门上交的校内津贴发放表按照不同的发放项目进行汇总。例如校内津贴的项目为工资、奖金、加班费,那么就整理出3张表abc,结构分别为职工编号、姓名、工资/奖金/加班费。另外,也是最重要的一环,就是创建一张职工字典表,列出本单位全体职工的职工编号、姓名,取名d
二、将表abcd分别导入SQL数据库
第一步,在SQL数据库中创建一个子数据库,姑且取名gz
第二步,在gz数据库中创建4张表,例如取名表ABCD,分别对应表abcd
第三步,分别将表abcd导入到数据库对应的表ABCD中。
三、在SQL查询分析器中,输入SQL语句
“select *,工资+奖金+加班费 as total from(select d.,
case when a.工资 is null then 0 else a.工资 end as 工资,
case when b.奖金 is null then 0 else b.奖金 end as 奖金,
case when c.加班费 is null then 0 else c.加班费 end as 加班费, from jggz_zd d
left join A a on d.bh=a.bh
left join B b on d.bh=b.bh
left join C c on d.bh=c.bh) jggz”,查询的结果即为一张结构为职工编号、姓名、工资、奖金、加班费、合计总额的汇总表。
四、实际运用
某高校每月初都要发放一笔校内津贴,它涉及岗位津贴、课时费、辅导员津贴、加班费、值班费、其他等6个项目。
第一步,将各部门上报的校内津贴表进行汇总,整理出6张表,结构分别为职工编号、姓名、岗位津贴/课时费/辅导员津贴/加班费/值班费/其他以及一张包含职工编号和姓名的全体职工字典表(见表1~7)。
第二步,打开SQL数据库的企业管理器,创建一个名为gz的数据库。在SQL Serve企业管理器窗口中,在控制台根目录窗口对话框内,选择操作下拉菜单中的新建数据库,进入数据库属性窗口,在常规标签中输入想要建立的数据库的名字(例如gz),单击确定按钮建立数据库(如图1所示)。当然,也可以在查询分析器窗口中用T-SQL命令创建数据库,输入SQL语句“CREATE DATABASE gz”
第三步,在数据库gz中分别创建出gz_1gz_2gz_3gz_4gz_5gz_6以及字典表jggz_zd。以创建表gz_1为例,在右侧空白处点右键,点击新建表,在列名中输入“bh”
数据类型中选择“int(数值型)长度为默认值,允许空中打“√”;在列名中输入“xm”,在数据类型中选择“char(字符型)长度为默认值,允许空中打“√”;在数据库简单吗列名中输入“gwjt”,在数据类型中选择“decimal(数值型)长度为默认值,允许空中打“√”,如果岗位津贴存在小数,那么就在小数位数中输入“2” (如图2所示)。输入完毕后点击保存按钮,输入表名“gz_1”即完成了建表(如图3所示)。