0

我有两个现有的列,并创建了一个新的空白列。当我尝试以下操作时,我的 NewColumn 填充了 1 和 0。我想要比例的十进制表示。看起来好像 SQL 是四舍五入的。Column1 和 Column2 是数字,我也将 NewColumn 定义为 Numeric。

更新我的表

设置 NewColumnd = ((Column1/Column2)*1.00)

其中 Column2 != 0

这是不正确的结果

Column1 Column2 新列

5.00 7.16 1

6.59 6.59 1

0.00 6.97 0

0.00 35.89 0

3.00 9.69 0

抱歉,我不得不重新发布此内容,但我的条目继续以奇怪的格式显示

4

1 回答 1

0

尝试以下 SQL 查询:

声明@table table(column1 decimal(18,2), column2 decimal(18,2))

插入@table
选择 5.00 ,7.16
插入@table
选择 6.59 ,6.59
插入@table
选择 0.00、6.97
插入@table
选择 0.00, 35.89

select * ,case when column1 != 0.00 then ((Column1/Column2)*1.00) else 0 end as column3
来自@table

我正在创建一个临时表,并注意我的列是十进制的,并且有 column1 和 column2。然后我正在动态创建一个新的 column3,并进行计算。

要将数据插入临时表,您可以执行以下操作:

插入@table
选择 CAST(column1 作为十进制 (18,2),
        CAST(column2 as decimal(18,2) from [YourTable]

不过,这似乎有点矫枉过正,理想情况下,如果您的列应该是十进制类型,您可以直接更改它们。您还应该考虑直接查询表,并从 int 转换为 decimal(18,2),然后随您计算列。

于 2013-06-10T19:11:45.373 回答