2

我的库存数据库中有 2 个值。一个是 QtyOnHand(浮点数),另一个是计算该项目的所有库存交易(想想SUM(TransQty)transQty 也是浮点数)。问题是,随着时间的推移,由于未知原因,其中一些值会不同步。所以现在我正在尝试清理它们。

基本上,我采用 QtyOnHand(我们声明它是准确的),并从中减去交易总额。然后针对差额在交易中进行更正输入。在我们得到带有大量“十进制灰尘”的数字之前,这非常有效。此外,0即使在实际值更像0.0000000000000000237.

以下是一些我无法更正的数据。

示例数据

带有科学计数法的项目给我带来了麻烦。甚至显示项目 PLXL-105-H 的行(显示 -18、-18)也无法准确显示,因为我的查询仅返回 1% 不匹配范围之外的值。我一直在 TSQL 中工作,它有助于操作 C# 程序中的值吗?

所以,这是我的问题:我应该如何处理这些数字?我尝试将它们转换为 DECIMAL(38,38),但这给了我算术溢出。我需要得到一个代表差异的准确值,然后使用该值来平衡。

4

1 回答 1

1

你是如何尝试进入的?

做类似的事情:

with to_update as (
     select itemNumber, QtyOnHand, TransBal
     from t
)
update tb_table
    set offset = TransBal - QtyOnHand
    from to_update
    where to_udpate.itemNumber = tb_table.itemNumber

应该做的伎俩。

听起来您正试图将数据从数据库中取出,对其进行操作,然后再将其放回。如果您留在数据库中,则不会有问题,因为值永远不会转换为字符串。

顺便说一句,对于十进制转换,你应该使用decimal(38,19)什么的。scale参数是小数点右边的位数,所以设置为38只代表-1到1之间的数字。

于 2012-09-27T16:02:37.143 回答