日期:2014-05-18  浏览次数:20495 次

为什么总是 有执行错误:对数据类型而言运算符无效。运算符为 subtract,类型为 varchar
use database
 select Fdate '日期',Fcheck as '审核',Fclose as '关闭',FBillNo as '订单号',
  SUM(CAST(FBaseQty AS INT)) as '汇总数量',MAX(FSenddate) AS '最迟交货日期', 
  SUM(CAST(FstockQty AS INT)) as '汇总入库数量', 
  SUM(Fallamount) as '汇总金额',FEmpIDName as '业务员' 
  from vwICBill_26 
  where '汇总入库数量'-'汇总数量'< 0
  and fdate >'2008-09-01' GROUP BY FBillNo,Fdate,Fcheck,Fclose,FEmpIDName
  ORDER BY '最迟交货日期' DESC

为什么总是提示 执行错误:对数据类型而言运算符无效。运算符为 subtract,类型为 varchar。呢??
FBaseQty FstockQty 原来的数据类型为decimal(10,2) 不用CAST转换仍有这样的错误

------解决方案--------------------
探讨
引用:
'汇总入库数量'-'汇总数量' 要换成
SUM(CAST(FstockQty AS INT))-SUM(CAST(FBaseQty AS INT))



我早试过了
但是会提示你
[Microsoft][ODBC SQL Server Driver][SQL Server]聚合不应
出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列
表所包含的子查询中,并且要对其进行聚合的列是外部引用。