select c.sid,c.goods_sid,c.goodsname,c.price,sum(c.sl) as zsl ,SUM(c.zj) as zj from 
(select sid,unitprice as price ,sum(warehouseamount) as sl ,goods_sid,goodsname,unitprice*sum(warehouseamount) as zj
from HJ_OFF_discrepancystoreroomyenrol  group by sid,goods_sid,goodsname,warehouseamount,unitprice
union
select good_sid as sid,goods_sid,goodsname,sum(outcount)*(-1) as sl ,outprice as price ,sum(outcount)*(-1)*outprice as zj  
from HJ_OFF_outstore  group by good_sid,goods_sid,goodsname,outprice) c
group by c.sid,c.goods_sid,c.goodsname,c.price这段代码执行了以后会报错
消息 8114,级别 16,状态 5,第 1 行
从数据类型 varchar 转换为 float 时出错。
谁看下怎么改

解决方案 »

  1.   

    消息 8114,级别 16,状态 5,第 1 行
    从数据类型 varchar 转换为 float 时出错。
    你哪个类型是VARCHAR的直接跟FLOAT 相乘了??
      

  2.   

    (select sid,unitprice as price ,sum(warehouseamount) as sl ,goods_sid,goodsname,unitprice*sum(warehouseamount) as zj
    from HJ_OFF_discrepancystoreroomyenrol group by sid,goods_sid,goodsname,warehouseamount,unitprice
    union
    select good_sid as sid,goods_sid,goodsname,sum(outcount)*(-1) as sl ,outprice as price ,sum(outcount)*(-1)*outprice as zj  
    from HJ_OFF_outstore group by good_sid,goods_sid,goodsname,outprice)看第一个select   sid   price  sl ...
    看第二个select   sid   goods_sid  goodsname你觉得这两个可以 union 吗?  数据类型都不一致!
      

  3.   


    select c.sid,c.goods_sid,c.goodsname,c.price,sum(c.sl) as zsl ,SUM(c.zj) as zj from 
    (select sid,goods_sid,goodsname,sum(warehouseamount) as sl ,unitprice as price ,unitprice*sum(warehouseamount) as zj
    from HJ_OFF_discrepancystoreroomyenrol group by sid,goods_sid,goodsname,warehouseamount,unitprice
    union
    select good_sid as sid,goods_sid,goodsname,sum(outcount)*(-1) as sl ,outprice as price ,sum(outcount)*(-1)*outprice as zj  
    from HJ_OFF_outstore group by good_sid,goods_sid,goodsname,outprice) c
    group by c.sid,c.goods_sid,c.goodsname,c.price