2015-10-06 32 views
-2
SELECT 
CAST((Discount_Amount AS numeric(11,2))/1.14)*0.14 AS [Service Tax] 
FROM APDEPADV 

回答

0

試試這個

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

我覺得你的括號是在錯誤的地方:

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

您應該先鑄造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 
0

括號的順序是錯誤的。理解表達式,然後相應地重寫括號。

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