ACCESS中通过一个字段补齐更新另一个字段

[干货从下面红字开始]

搞了好久的一个问题终于有结果……

根据学生进出馆的次数和学生报名人数来分配自习间

学生报名是通过工号(学号)来报名的;

而门禁系统统计出来的数据有绝一大部分仅有 卡号没有 工号和姓名,

即便统计出来也不准啊:

各种问,各种找,

问财务,说给的卡号没有问题,

问门禁管理人员,说搞好了给我电话,

搞好几天也没有给我打电话,

据说是简单的看了下没有搞明白,当时一同事在那看见了

就这光导出日志就花了NN久。(门禁是office 2003)每次只能导60000条数据,还要等10分钟导一次,

中间再死几次机,我KAO……

 

到最后还是要靠自己……

找了好久才从门禁系统里面导出学生的卡号,工号,姓名这张表,

窃喜,

真是什么事都能遇上:结果一对比,

一条数据也对不上,WHAT??????

原来,

门禁系统中,学生信息(卡号,工号,姓名)和日志导出的信息中的卡号居然不一样:

学生信息卡中:卡号是字符型,而日志中则是数字型,所有前面的‘0’字符都给吃了。

OH,SHIT!!这样的系统也能卖??????????

 (虽为技术部的我,也只能干瞪眼,因为上系统,只是一拍脑袋的事情。)

我想问我可以骂人吗,

没有办法,还要处理这些破数据,本以为很简单的事,我的机器上仅有ACCESS数据库,

好吧,所有的数据都导入ACCESS,

才发现,需要一个新的字段,把原来的不全的卡号给补全

环境:ACCESS 目标:卡号是8位的,不足的前面用‘0’补全)

本以为是多么EASY 的一件事,

可是发现并不容易,各种找:

最后静心想想:

1、把每一个卡号都在前面加8个‘0’

2、再从右边截取8位

那也搞了我一个晚上,

原来就是一句话的问题

select right(('00000000'&acountID),8) as cardID,stuID,stuName into countedStu_new from countedStu

直接写入到另一个表中。

最后用的是这样一句话:

select a.stuID,a.stuName,a.cardID,b.times  into roomResult from AllCardIDStu as a,countStu_new as b where a.cardID=b.cardID and a.stuID in(select stuID from enrollRoom)  order by b.times desc 

网上查了好多,都说不行,得搞到SQL SEVER 里写函数什么的。

终于自己一句话就搞定了。

 

原文地址:https://www.cnblogs.com/ssqhan/p/6637430.html