SQL出现强制类型转换

刘二梦 2016-12-06 07:16:01
SELECT B.FNAME ,A1.FSRCMATERIALID ,A2.FOWNEROUTID ,A1.FQTY ,E.FSENDPRICE ,A1.FQTY * E.FSENDPRICE AS FCOUNT ,
A1.FQTY AS FQTY1,D.FTAXPRICE ,A1.FQTY *D.FTAXPRICE AS FCOUNT1,A1.FQTY *D.FTAXPRICE-A1.FQTY *E.FSENDPRICE AS LR
FROM
T_ORG_ORGANIZATIONS_l B
INNER JOIN T_STK_STKTRANSFERIN A2 ON A2.FOWNEROUTID = B.FORGID
INNER JOIN T_STK_STKTRANSFERINENTRY A1 ON A1.FID=A2.FID
INNER JOIN T_BD_MATERIAL_L C ON C.FMATERIALID=A1.FMATERIALID
INNER JOIN T_IOS_PRICELISTENTRY D ON D.FMATERIALID=A1.FMATERIALID
INNER JOIN T_IOS_PRICELIST D2 ON D2.FID = D.FID
INNER JOIN TMP2584AE0FBAE011E688353C970E1 E ON E.FMATERIALID = D.FMATERIALID

WHERE A1.FSRCMATERIALID = E.FMATERIALID
AND D2.FAUDITSTATUS = 'A' OR D2.FAUDITSTATUS = 'I'
AND A2.FDOCUMENTSTATUS = 'C'OR A2.FDOCUMENTSTATUS = 'B'
AND A2.FTRANSFERBIZTYPE = 'OVERORGTRANSFER'
AND A2.FDATE >='2016-09-01 00:00:00.000'
AND A2.FDATE <='2016-09-30 00:00:00.000'

GROUP BY B.FNAME ,A1.FMATERIALID ,A2.FOWNEROUTID ,A1.FQTY ,D.FTAXPRICE ,E.FSENDPRICE ,A1.FSRCMATERIALID



错误:消息 245,级别 16,状态 1,第 1 行
在将 nvarchar 值 '01.0001' 转换成数据类型 int 时失败。
...全文
377 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-12-06
  • 打赏
  • 举报
回复
FSENDPRICE--类型是不是字符串01.0001 ------------- 用以下试试 e.g.
SELECT  B.FNAME ,
        A1.FSRCMATERIALID ,
        A2.FOWNEROUTID ,
        A1.FQTY ,
        E.FSENDPRICE ,
        A1.FQTY*1.0 * E.FSENDPRICE AS FCOUNT ,
        A1.FQTY AS FQTY1 ,
        D.FTAXPRICE ,
        A1.FQTY*1.0 * CAST(D.FTAXPRICE AS  AS FCOUNT1 ,
        A1.FQTY*1.0 * D.FTAXPRICE - A1.FQTY*1.0 * E.FSENDPRICE AS LR
FROM    T_ORG_ORGANIZATIONS_l B
        INNER JOIN T_STK_STKTRANSFERIN A2 ON A2.FOWNEROUTID = B.FORGID
        INNER JOIN T_STK_STKTRANSFERINENTRY A1 ON A1.FID = A2.FID
        INNER JOIN T_BD_MATERIAL_L C ON C.FMATERIALID = A1.FMATERIALID
        INNER JOIN T_IOS_PRICELISTENTRY D ON D.FMATERIALID = A1.FMATERIALID
        INNER JOIN T_IOS_PRICELIST D2 ON D2.FID = D.FID
        INNER JOIN TMP2584AE0FBAE011E688353C970E1 E ON E.FMATERIALID = D.FMATERIALID
WHERE   A1.FSRCMATERIALID = E.FMATERIALID
        AND D2.FAUDITSTATUS = 'A'
        OR D2.FAUDITSTATUS = 'I'
        AND A2.FDOCUMENTSTATUS = 'C'
        OR A2.FDOCUMENTSTATUS = 'B'
        AND A2.FTRANSFERBIZTYPE = 'OVERORGTRANSFER'
        AND A2.FDATE >= '2016-09-01 00:00:00.000'
        AND A2.FDATE <= '2016-09-30 00:00:00.000'
GROUP BY B.FNAME ,
        A1.FMATERIALID ,
        A2.FOWNEROUTID ,
        A1.FQTY ,
        D.FTAXPRICE ,
        E.FSENDPRICE ,
        A1.FSRCMATERIALID;
刘二梦 2016-12-06
  • 打赏
  • 举报
回复
为什么会是第一行报错?等号在where里面啊
卖水果的net 2016-12-06
  • 打赏
  • 举报
回复
在等号两侧,只要一侧是 数值型,系统就会隐性的把另一侧转成 数值型。 如果转化失败,就会报你这个错误出来;

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧