嗨,大家好我陷入了非常简单的一步,我想计算折扣价格作为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)
费率与它相同时,但当给定产品的折扣列中有值时,它应该计算它。
我希望所有人都应该清楚。
任何帮助都会受到极大的赞扬?
答案 0 :(得分:2)
如果我正确理解您的问题,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
答案 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