我有两个现有列,并创建了一个新的空白列。当我尝试以下操作时,我的NewColumn填充了1和0。我想要一个十进制表示的比例。似乎SQL正在四舍五入。 Column1和Column2是数字,我也将NewColumn定义为Numeric。
更新MyTable
设置NewColumnd =((Column1 / Column2)* 1.00)
其中Column2!= 0
这是不正确的结果
Column1 Column2 NewColumn
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
抱歉,我不得不重新发布此内容,但我的参赛作品仍以奇怪的格式显示
答案 0 :(得分:0)
尝试以下SQL查询:
declare @table table(column1 decimal(18,2), column2 decimal(18,2)) insert into @table select 5.00 ,7.16 insert into @table select 6.59 ,6.59 insert into @table select 0.00, 6.97 insert into @table select 0.00, 35.89 select * ,case when column1 != 0.00 then ((Column1/Column2)*1.00) else 0 end as column3 from @table
我正在创建一个临时表,并注意我的列是十进制的,并且有column1和column2。然后我通过计算动态创建一个新的column3。
要将数据插入到temprary表中,您可以执行以下操作:
insert into @table select CAST(column1 as decimal(18,2), CAST(column2 as decimal(18,2) from [YourTable]
这似乎有点矫枉过正,理想情况下,如果你的列应该是十进制类型,你可以直接更改它们。您还应该考虑直接查询表,并从int转换为十进制(18,2),然后逐步计算列。