不同月份的年初累计折旧和年初原值皆不同问题来源:(分公司)U8产品支持部杨天椿2005年5月12日现象问题说明:固定资产及累计折旧表(一),同一类别不同月份的年初累计折旧和年初原值皆不同,1月是对,麻烦写条语句更新2-12月的年初累计折旧和年初原值等于1月现象固定资产及累计折旧表(一):一月份的年初原值:614369944.4年初累计折旧的情况是一样的,不再分析:现象二月份的数据为:611929523.82,相差:2440420.58分析过程先分析界面看到的数据和数据库中的是否一致:可以看到数据是一致的分析过程使用的语句:selectsum(dblyearvalue),sum(dblyeardeprtotal)fromfa_totalwhereiperiod=1selectsum(dblyearvalue),sum(dblyeardeprtotal)fromfa_totalwhereiperiod=2分析过程分析是否存在不相等的数据:select*from(select*fromfa_totalwhereiperiod=1)aainnerjoin(select*fromfa_totalwhereiperiod=2)bbonaa.sdeptnum=bb.sdeptnumandaa.stypenum=bb.stypenumwhereaa.dblyearvaluebb.dblyearvalue分析过程查询结果是没有:分析过程再分析数据差异在哪里:selectsum(aa.dblyearvalue),sum(aa.dblyeardeprtotal)from(select*fromfa_totalwhereiperiod=1--orderbysdeptnum,stypenum)aaleftjoin(select*fromfa_totalwhereiperiod=2--orderbysdeptnum,stypenum)bbonaa.sdeptnum=bb.sdeptnumandaa.stypenum=bb.stypenumwherebb.dblyearvalueisnull分析过程可以看到数据差异为:2440420.58=614369944.4-611929523.82分析过程查找差异的纪录:selectaa.*from(select*fromfa_totalwhereiperiod=1)aaleftjoin(select*fromfa_totalwhereiperiod=2)bbonaa.sdeptnum=bb.sdeptnumandaa.stypenum=bb.stypenumwherebb.dblyearvalueisnull分析过程明细记录:分析过程问题原因找到了:问题是如何修改,很明显,数据表中丢失了或缺少了一些记录:每个月都有此情况,且记录数不一样,如何才能改对?分析过程以二月份为例:selectaa.*into#depr2from(select*fromfa_totalwhereiperiod=1)aaleftjoin(select*fromfa_totalwhereiperiod=2)bbonaa.sdeptnum=bb.sdeptnumandaa.stypenum=bb.stypenumwherebb.dblyearvalueisnull=2,lmonthcount=0,dbllastaccrualvalue=0,dbllastdepr=0,dbllastaddvalue=0,dbllastdecvalue=0,dblmonthvalue=0,dblvalue=0,dblmonthdeprtotal=0,dbldeprtotal=0,dbladdvalue=0,dbldecvalue=0,dbltransindeprtotal=0,dbltransoutdeprtotal=0,dblaccrualvalue=0,dbldepr=0insertintofa_totalselect*from#depr2分析过程其他月份类似修改:2-12月份修改后,发现问题又来了:发现有几个月份的数据还是有问题:分析过程查询发现数据不对:分析过程查询分析一下:select*from(select*fromfa_totalwhereiperiod=1)aainnerjoin(select*fromfa_totalwhereiperiod=6)bbonaa.sdeptnum=bb.sdeptnumandaa.stypenum=bb.stypenumwhereaa.dblyearvaluebb.dblyearvalue分析过程可以看一下具体的差异记录:解决方法为零的数据肯定是错的,可以更新:updatefa_totalsetfa_total.dblyearvalue=bb.dblyearvalue,fa_total.dblyeardeprtotal=bb.dblyeardeprtotalfromfa_totalinnerjoin(select*fromfa_totalwhereiperiod=1)bbonfa_total.sdeptnum=bb.sdeptnumandfa_total.stypenum=bb.stypenumwhere(fa_total.dblyearvaluebb.dblyearvalue)andfa_total.iperiod=6分析过程再分析:selectaa.sdeptnum,aa.stypenum,aa.dblyearvalue,bb.dblyearvaluefrom(select*fromfa_totalwhereiperiod=1)aainnerjoin(select*fromfa_totalwhereiperiod=6)bbonaa.sdeptnum=bb.sdeptnumandaa.stypenum=bb.stypenumwhereaa.dblyearvaluebb.dblyearvalue分析过程只剩下一条记录不相等:分析过程可以分析一下卡片数据:select*fromfa_cardswheresdeptnum='01105'andstypenum='010301'anddinputdate'2004-05-31‘分析过程可以看到,30620.0与51870.0的差额正好是:21250.0解决方法分析后可以发现:由于6月份以后系统增加了原始卡片,也会造成年初数据的变化:其他月份也存在此问题:解决方法综合以上分析:数据错误原因:1。缺少部分数据:需要到库中增加2。更改后还有部分数据时错误的:需要改正3。年中录入原始卡片,造成数据不一致是正常的结束