每当我运行它时,我都有以下查询,它给了我不正确的语法接近'As'


SELECT 
CAST((Discount_Amount AS numeric(11,2))/1.14)*0.14 AS [Service Tax]
FROM APDEPADV

我觉得你的括号放错地方了:

SELECT 
(CAST(Discount_Amount AS numeric(11,2))/1.14)*0.14 AS [Service Tax]
FROM APDEPADV

你应该先cast Discount_Amount然后执行其他计算:

  1. 将Discount_Amount转换为数值
  2. 接下来,将结果除以1.14
  3. 最后,将其全部乘以0.14

如果你稍微分解一下你的代码,你可能会明白发生了什么:

  1. CAST的语法如下:CAST(a AS b)
  2. 你的代码有:CAST((Discount_Amount AS numeric(11,2))/1.14)
  3. 因为在 CAST函数内部有除法,那么整个表达式(Discount_Amount AS numeric(11,2))/1.14被视为您想要转换的值(上面第1点中的a)。

这有两个结果。首先,CAST(a AS b)现在变成了CAST(a),这没有多大意义(你要把它转换成什么?)

其次,这意味着表达式Discount_Amount AS numeric(11,2)被单独处理到CAST函数。像Discount_Amount/1.14这样的表达式是有效的,但(Discount_Amount AS numeric(11,2))/1.14本身不是,这就是为什么您会收到错误。

通过重新排列括号,您应该更接近您的意图:

SELECT
(
    CAST(Discount_Amount AS numeric(11,2))
    /1.14
)
* 0.14
AS [Service Tax]
FROM APDEPADV

试试这个

 SELECT 
    (CAST(Discount_Amount AS numeric(11,2))/1.14)*0.14 AS [Service Tax]
    FROM APDEPADV

括号顺序错误。理解表达式,然后相应地重写括号。

SELECT
((Cast(Discount_Amount AS numeric(11,2))/1.14)*0.14 AS [Service Tax]
FROM APDEPADV

最新更新