2014-05-24 90 views
0

嗨,大家好,我被困在非常簡單的一步,我想計算折扣價格作爲SQL服務器的淨額。我用下面的SQL語句:計算sql server中淨額的折扣價格?

SELECT ITEM_MODEL, 
     ITEM_NAME, 
     ITEM_DESCRIPTION, 
     QUANTITY, 
     RATE=RATE*(Discount/100), 
     AMOUNT, 
     DATE, 
     Discount 
     FROM ITEM_DETAILS 
     ORDER BY ITEM_MODEL 

1.It工作正常,但它有一個問題,因爲會有對每一個產品沒有折扣,所以當沒有折扣的價格,我包含空,然後用RATE和乘法空使得 它爲空。在數據庫中計算折扣價格的安全方式是什麼?

2.條件應該在那裏,當Discount price is zero(0)率將相同,但是當給定產品的折扣欄中有一個值時,它應該計算它。我希望它應該對所有人都清楚。

任何幫助將受到極大的讚揚?

回答

1

一個簡單的例子應該做的;

SELECT ITEM_MODEL, 
     ITEM_NAME, 
     ITEM_DESCRIPTION, 
     QUANTITY, 
     RATE=CASE WHEN Discount IS NULL OR Discount=0 
      THEN RATE 
      ELSE RATE*(Discount/100) END, 
     AMOUNT, 
     DATE, 
     Discount 
     FROM ITEM_DETAILS 
     ORDER BY ITEM_MODEL 

該情況基本上會檢查折扣是否爲零或零,在這種情況下使用RATE,否則進行正常計算。

2

聽起來像CaseColaesce將解決你的問題,如果我理解正確你的問題:

SELECT ITEM_MODEL, 
     ITEM_NAME, 
     ITEM_DESCRIPTION, 
     QUANTITY, 
     RATE=RATE*(case when coalesce(discount,0) = 0 then 1 else Discount/100 end), 
     AMOUNT, 
     DATE, 
     Discount 
FROM ITEM_DETAILS 
ORDER BY ITEM_MODEL 
1

在SQL Server,你可以使用如下的CASE條件:

CASE WHEN discount > 0 then 'Value1' ELSE '0' END 

那麼結果將是如下:

SELECT ITEM_MODEL, 
     ITEM_NAME, 
     ITEM_DESCRIPTION, 
     QUANTITY, 
     (CASE WHEN Discount > 0 THEN RATE*(Discount/100) ELSE 0 END) AS MyRate 
     AMOUNT, 
     DATE, 
     Discount 
     FROM ITEM_DETAILS 
     ORDER BY ITEM_MODEL 
0

使用ISNULL功能

SELECT ITEM_MODEL, 
    ITEM_NAME, 
    ITEM_DESCRIPTION, 
    QUANTITY, 
    RATE=RATE*(ISNULL(Discount, 100)/100), 
    AMOUNT, 
    DATE, 
    Discount 
    FROM ITEM_DETAILS 
    ORDER BY ITEM_MODEL