这也是问题?(50分)

  • 主题发起人 主题发起人 Robin_Fang
  • 开始时间 开始时间
R

Robin_Fang

Unregistered / Unconfirmed
GUEST, unregistred user!
A Select MCode,Qty,Price,0 As Unit Into #CurAA From DeliverD Where Left(MCode,3)='304' And Qty>0
B Update #CurAA Set Unit=Price/Qty
C Select * From #CurAA
D Drop Table #CurAA
Unit的值没有小数值;

若将A行改成:
Select MCode,Qty,Price,0.00 As Unit Into #CurAA From DeliverD Where Left(MCode,3)='304' And Qty>0
Update #CurAA Set Unit=Price/Qty
Select * From #CurAA
Drop Table #CurAA
则运行过程中会出现:
Server: Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated.

并且Unit的值始终为A行中定义的小数位数:".00"

EMail:Robin_Fang@21CN.COM
 
不明白
0.00 不是字段名吗?
请讲一下
 
Price字段是什么类型的??是数值型吗??

Select MCode,Qty,Price,0.000000 As Unit Into #CurAA From DeliverD Where Left(MCode,3)='304' And Qty>0
^^^^^^^^
多加几个零看看,
 
确定Price/Qty的有效位数,用非0的数据代入。
如:
当max(Price/Qty) = 5645.654时,用1111.111代入select 语句,成为下面的型式
select MCode,Qty,Price,1111.111 As Unit Into #CurAA From DeliverD Where Left(MCode,3)='304' And Qty>0
这里的'1111.111'中,'1'可以用任意非0的数据。
 
To:antic_ant
'0.00'是SQL语句给新增字段的初始值;
To:枫
Qty,Price 均是Decimal(15,4);你初始小数几位0,则结果就为:.+N个0;
To:Dlnew
不符合要求,同时也不能正确得到结果;

此问题我已解决,不过都给你们5分,多谢关注。
 
多人接受答案了。
 
后退
顶部