在sql server中计算净额折扣价格

本文关键字:折扣价 计算 sql server | 更新日期: 2023-09-27 18:04:51

嗨,伙计们,我被困在非常简单的步骤,我想计算折扣价格作为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。它工作得很好,但它有一个问题,因为每个产品都没有折扣,所以当没有折扣价格时,i包含null,然后null乘以RATE,得到它为空。在数据库中计算折扣价的安全方法是什么?

2。条件应该是,当Discount price is zero(0)的比率将是相同的,但当有一个值在折扣列为给定的产品,它应该计算它。我希望大家都明白。

任何帮助都将受到极大的赞扬。

在sql server中计算净额折扣价格

听起来像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

一个简单的CASE就可以了;

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

case将检查discount是否为null或0,在这种情况下使用RATE,否则执行正常计算。

在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

使用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