关于 sql:Msg 8114, Level 16, State 5, Procedure deepanshu_temp, Line 141 Error convert data type varchar to numeric | 珊瑚贝

Msg 8114, Level 16, State 5, Procedure deepanshu_temp, Line 141 Error converting data type varchar to numeric


我正在使用以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(SELECT
     CASE
        WHEN [PRIMARY Plan] > 0
           THEN
              CASE
                 WHEN [market_type] = ‘WH’
                    THEN
                       CASE
                          WHEN @a > 20
                             THEN 1
                          WHEN (((#temp.[MTD PRIMARY] + #temp.[stockC&F])/(#temp.[PRIMARY Plan])) < ((@a/30) + 20) )

                    THEN
                    (((#temp.[PRIMARY Plan]) *((@a/30) + 20))  (#temp.[stockC&F] + #temp.[MTD PRIMARY]))
  —                  when (((#temp.[MTD Primary] + #temp.[stockC&F] +#temp.stockplant + #temp.stocktransact)/#temp.[Primary Plan]) < ((@a/30) + 20) )
                    ELSE 0
                END
            ELSE
                END
    ELSE ‘-‘
            END AS ‘availibility_alert’)

我根据临时表 (#temp2) 中的某些计算插入此值,但出现错误:

Msg 8114, Level 16, State 5, Procedure deepanshu_temp, Line 141
Error converting data type varchar to numeric.

Msg 8114, Level 16, State 5, Procedure deepanshu_temp, Line 141
Error converting data type varchar to numeric.

我已经分析出错误出现在我的代码中\\’then\\’之后的那一行:

1
(((#temp.[PRIMARY Plan]) *((@a/30) + 20))  (#temp.[stockC&F] + #temp.[MTD PRIMARY]))

我还检查了我使用的列是 decimal(38,6) 类型的
但仍然无法找到。

谁能帮帮我?

  • @a 的类型是什么?
  • 替换列


这是你的代码缩进更好一点:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT (CASE WHEN [PRIMARY Plan] > 0
             THEN (CASE WHEN [market_type] = ‘WH’
                        THEN (CASE WHEN @a > 20
                                   THEN 1
                                   WHEN (((#temp.[MTD PRIMARY] + #temp.[stockC&F])/(#temp.[PRIMARY Plan])) < ((@a/30) + 20) )

                                   THEN (((#temp.[PRIMARY Plan]) *((@a/30) + 20))  (#temp.[stockC&F] + #temp.[MTD PRIMARY]))
                                   ELSE 0
                              END)
                        ELSE
                   END)
        ELSE ‘-‘
    END) AS availability_alert

请注意,您正在返回一些值作为数字 (0) 和一些作为字符串 (-)。

SQL Server 必须定义返回类型。它决定一个数字。问题可能是将 – 转换为数字。


来源:https://www.codenong.com/40322457/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?