计算sql server中净额的折扣价?

时间:2014-05-24 17:35:44

标签: c# sql sql-server

嗨,大家好我陷入了非常简单的一步,我想计算折扣价格作为sql server中的净额。我使用了以下sql语句:

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

1.它工作正常,但它有一个问题,因为每个产品都没有折扣,所以当没有折扣价时我包含null然后null乘以RATE并使 它是null。在数据库中计算折扣价的安全方法。

2.条件应该是当Discount price is zero(0)费率与它相同时,但当给定产品的折扣列中有值时,它应该计算它。 我希望所有人都应该清楚。

任何帮助都会受到极大的赞扬?

4 个答案:

答案 0 :(得分: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 :(得分: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 :(得分: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

答案 3 :(得分: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