库存账龄分析表报错MERGE 语句试图多次更新或删除同一行

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

库存账龄分析表报错MERGE 语句试图多次更新或删除同一行

库存账龄分析表报错MERGE 语句试图多次更新或删除同一行


问题场景:

    查询库存账龄分析表,有时候会出现报错:MERGE 语句试图多次更新或删除同一行。目标行与多个源行匹配时会出现这种情况。MERGE 语句无法多次更新/删除目标表的同一行。

     

上传图片



原因&解决:

    原因:此问题多由保质期引起,标准系统库存单据的生产日期和有效期至只到天,不包含时分秒信息,库存账龄分析表在读取和重算库存数据的时候,也对读取和计算的即时库存、库存结余数据的生产日期和有效期至做了格式化处理,如果有二开为库存单据的生产日期或有效期至赋值,但是没有做格式化去掉时分秒,那单据保存下来的生产日期和有效期至就包含了时分秒,更新即时库存后的即时库存表、关账后的库存余额表的生产日期和有效期至也会包含时分秒,查询库存账龄分析表格式化掉时分秒信息后就可能出现重复数据,引起报错。

    解决:需要执行语句,清除相关表中生产日期和有效期至数据中的时分秒信息,并找到问题数据产生的源头库存单据,对源头数据做好格式化处理。单据数据修复完之后执行即时库存校对(如果启用了序列号,且这些即时库存关联了序列号,则不能简单做校对处理,需要执行语句修复即时库存数据,去掉时分秒信息,校对会产生新的即时库存记录,导致序列号主档引用的即时库存ID错误),清除零库存(如果需要零库存参与盘点,则不能简单执行清除零库存功能,需要通过后台语句直接删除不需要的带有时分秒的零库存)。

    查询示例语句:select * from t_stk_inventory where datepart(hh, fproducedate) <> 0 or datepart(mi, fexpirydate) <> 0

    查询系统使用过的库存单据:select distinct(fsourformid) from t_stk_inventorylog

    其他出库单生产日期数据更新示例:update t_stk_misdeliveryentry set fproducedate = convert(varchar(20), fproducedate, 23) where datepart(mi, fproducedate) <> 0;


库存账龄分析表报错MERGE 语句试图多次更新或删除同一行

库存账龄分析表报错MERGE 语句试图多次更新或删除同一行问题场景: 查询库存账龄分析表,有时候会出现报错:MERGE 语句试图多次更新...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息