2

我有一个来自 JDE/AS400 的 ODBC 链接表,我将其引入 MS Access 2010。该表有四个数据类型为十进制的字段,一旦我将它们写入临时表,我需要将它们转换为双精度数据类型。有没有办法在一个查询中有四个更改表/列语句?

如果有人想知道,存储在这些字段中的数据是价格和成本,但它们以 15 的十进制值和 0 个尾随小数的形式存储在 ODBC 表中,我必须将 2 除以 10,000 和 1 除以 100,000 才能得到小数正确位置的点来表示真实的价格/成本 例如,价格字段中的 3558767 实际上是 355.8767 或 355.88 舍入的价格)。当我将相同的数据带入 Access 并除以 10000 时,我得到 355.00。我需要正确的美分值。我过去能够做到这一点的唯一方法是编写一个更改表/更改列查询以在执行除法之前将数据类型更改为加倍。

由于我有四个这样的字段,我想一次更改或修改所有四个。有任何想法吗?

任何帮助表示赞赏。

4

2 回答 2

2

在 Access(或符合 ANSI 的 SQL,据我所知)中没有办法同时更改多个列;你将不得不:

  • 运行四个单独的更改脚本,或者...
  • 创建一个新的临时表,将所有数据移动到临时表中,删除主表,然后重命名临时表

在这种情况下,这确实是一种清洗,因为无论哪种方式,您都将运行四个脚本。

于 2013-03-07T19:48:11.387 回答
1

如前所述,Access SQL 不允许您使用单个 SQL 语句更改多个列。但是,您的问题中的背景信息有些令人困惑。

SELECT decimal_field/10^4 AS my_quotient
FROM tblFoo;

decimal_field是精度 = 15 和小数位数 = 0 的小数类型。

当我存储3558767decimal_field运行该查询时,Access 2007 为我355.8767提供my_quotient. 这就是我理解你想要但没有得到的结果。

如果您可以解决这个问题,也许您不需要更改任何列。

于 2013-03-07T20:21:19.223 回答