在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)
的比率将是相同的,但当有一个值在折扣列为给定的产品,它应该计算它。我希望大家都明白。
任何帮助都将受到极大的赞扬。
听起来像Case
和Colaesce
将解决你的问题,如果我正确理解你的问题:
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