报错信息:对数据类型而言运算符无效,运算符为divide,类型为varchar(50分)

  • 主题发起人 主题发起人 caozhanli1216
  • 开始时间 开始时间
C

caozhanli1216

Unregistered / Unconfirmed
GUEST, unregistred user!
select AREANAME,BUREAUNAME,sum(AMOUNT/PIECE_AMOUNT) as AMOUNTsum from v_BILLINFO WHERE (GOODSCODE = 'dg0001') group by BUREAUNAME,AREANAME ORDER BY AMOUNTsum desc ;
帮帮我吧,奉送全部的分数!!!
 
AMOUNT,PIECE_AMOUNT是什么类型?
如果是varchar当然不可以。
如果里面存储确实是数字,你这样做也必须见转换。
还有,group by BUREAUNAME,AREANAME 这里也需要把字段加全吧。
 
AMOUNT,PIECE_AMOUNT 是NUMBERIC类型
group by BUREAUNAME,AREANAME为什么还要加字段啊???
 
不加。既然是数字类型,怎么会出错。
是不是里面有null值?或者PIECE_AMOUNT为0?
你这样测试看看如何?
select AREANAME,BUREAUNAME,sum(AMOUNT/PIECE_AMOUNT) as AMOUNTsum from v_BILLINFO WHERE (GOODSCODE = 'dg0001')and(PIECE_AMOUNT<>0) group by BUREAUNAME,AREANAME ORDER BY AMOUNTsum desc
或者
select AREANAME,BUREAUNAME,sum(AMOUNT/PIECE_AMOUNT) as AMOUNTsum from v_BILLINFO WHERE (GOODSCODE = 'dg0001')and(sum(PIECE_AMOUNT<>0)) group by BUREAUNAME,AREANAME ORDER BY AMOUNTsum desc

抱歉,我不知道后面一个是否可以,你可以测试看看。
 
哦,不好意思!
我想应该是VARCHAR,它文档上说的是NUMBERIC好像不对
可在这里这么转换呢?
 
select AREANAME,BUREAUNAME,sum(cast( AMOUNT as decimal(18,2))/cast(PIECE_AMOUNT as decimal(18,2))) as AMOUNTsum from v_BILLINFO WHERE (GOODSCODE = 'dg0001') group by BUREAUNAME,AREANAME ORDER BY AMOUNTsum desc
 
接受答案了.
 
后退
顶部