《不同月份的年初累计折旧和年初原值皆不同.ppt》由会员分享,可在线阅读,更多相关《不同月份的年初累计折旧和年初原值皆不同.ppt(27页珍藏版)》请在三一办公上搜索。
1、不同月份的年初累计折旧和年初原值皆不同,问题来源:(分公司)U8产品支持部杨天椿 2005年5月12日,现象,问题说明:固定资产及累计折旧表(一),同一类别不同月份的年初累计折旧和年初原值皆不同,1月是对,麻烦写条语句更新2-12月的年初累计折旧和年初原值等于1月,现象,固定资产及累计折旧表(一):一月份的年初原值:614369944.4年初累计折旧的情况是一样的,不再分析:,现象,二月份的数据为:611929523.82,相差:2440420.58,分析过程,先分析界面看到的数据和数据库中的是否一致:可以看到数据是一致的,分析过程,使用的语句:select sum(dblyearvalue)
2、,sum(dblyeardeprtotal)from fa_total where iperiod=1 select sum(dblyearvalue),sum(dblyeardeprtotal)from fa_total where iperiod=2,分析过程,分析是否存在不相等的数据:select*from(select*from fa_total where iperiod=1)aainner join(select*from fa_total where iperiod=2)bb on aa.sdeptnum=bb.sdeptnum and aa.stypenum=bb.stypen
3、umwhere aa.dblyearvaluebb.dblyearvalue,分析过程,查询结果是没有:,分析过程,再分析数据差异在哪里:select sum(aa.dblyearvalue),sum(aa.dblyeardeprtotal)from(select*from fa_total where iperiod=1-order by sdeptnum,stypenum)aaleft join(select*from fa_total where iperiod=2-order by sdeptnum,stypenum)bb on aa.sdeptnum=bb.sdeptnum and
4、aa.stypenum=bb.stypenumwhere bb.dblyearvalue is null,分析过程,可以看到数据差异为:,分析过程,查找差异的纪录:select aa.*from(select*from fa_total where iperiod=1)aaleft join(select*from fa_total where iperiod=2)bb on aa.sdeptnum=bb.sdeptnum and aa.stypenum=bb.stypenumwhere bb.dblyearvalue is null,分析过程,明细记录:,分析过程,问题原因找到了:问题是如何
5、修改,很明显,数据表中丢失了或缺少了一些记录:每个月都有此情况,且记录数不一样,如何才能改对?,分析过程,以二月份为例:select aa.*into#depr2from(select*from fa_total where iperiod=1)aaleft join(select*from fa_total where iperiod=2)bb on aa.sdeptnum=bb.sdeptnum and aa.stypenum=bb.stypenumwhere bb.dblyearvalue is null,分析过程,update#depr2 set iperiod=2,lmonthcou
6、nt=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=0 insert into fa_total select*from#depr2,分析过程,其他月份类似修改:2-12月份修
7、改后,发现问题又来了:发现有几个月份的数据还是有问题:,分析过程,查询发现数据不对:,分析过程,查询分析一下:select*from(select*from fa_total where iperiod=1)aainner join(select*from fa_total where iperiod=6)bb on aa.sdeptnum=bb.sdeptnum and aa.stypenum=bb.stypenumwhere aa.dblyearvaluebb.dblyearvalue,分析过程,可以看一下具体的差异记录:,解决方法,为零的数据肯定是错的,可以更新:update fa_to
8、tal set fa_total.dblyearvalue=bb.dblyearvalue,fa_total.dblyeardeprtotal=bb.dblyeardeprtotalfrom fa_total inner join(select*from fa_total where iperiod=1)bb on fa_total.sdeptnum=bb.sdeptnum and fa_total.stypenum=bb.stypenumwhere(fa_total.dblyearvaluebb.dblyearvalue)and fa_total.iperiod=6,分析过程,再分析:sel
9、ect aa.sdeptnum,aa.stypenum,aa.dblyearvalue,bb.dblyearvalue from(select*from fa_total where iperiod=1)aainner join(select*from fa_total where iperiod=6)bb on aa.sdeptnum=bb.sdeptnum and aa.stypenum=bb.stypenumwhere aa.dblyearvaluebb.dblyearvalue,分析过程,只剩下一条记录不相等:,分析过程,可以分析一下卡片数据:select*from fa_cards where sdeptnum=01105 and stypenum=010301and dinputdate2004-05-31,分析过程,可以看到,30620.0与51870.0的差额正好是:21250.0,解决方法,分析后可以发现:由于6月份以后系统增加了原始卡片,也会造成年初数据的变化:其他月份也存在此问题:,解决方法,综合以上分析:数据错误原因:1。缺少部分数据:需要到库中增加2。更改后还有部分数据时错误的:需要改正3。年中录入原始卡片,造成数据不一致是正常的,结束,谢谢大家,