我使用以下查询来获得折扣后的总金额。
我的问题是当折扣等于零时,总金额变为零。
如何解决此问题?
SELECT
CAST(SUM(Quantity * UnitPrice * (Discount / 100)) AS varchar(50))
FROM
Stock_Purchase_Details
答案 0 :(得分:2)
简单案例构造
unitPrice *
case when discount > 0 then (discount / 100)
else 1 end
您发布的代码的内容。通常,折扣价是
unitPrice * ((100 - discount) / 100)
答案 1 :(得分:1)
如果您想要在折扣后获得最终金额,则应使用
CAST(SUM(Quantity * UnitPrice * (1-(Discount/100)) AS VARCHAR(50))
这将为您提供折扣后的金额。您当前的公式为您提供折扣金额,而不是折扣后的金额
答案 2 :(得分:0)
为什么不在这之前检查折扣/ 0是否为0,如果它为零,那么不要包括它?这可以通过案例陈述来完成:
CASE
WHEN (Discount/100) = 0 then (logic)
ELSE (other logic)
END
只有一个解决方案,因为我确信还有其他解决方案。
答案 3 :(得分:0)
只需查看您的查询,折扣就意味着打折百分比,而不是折扣百分比。换句话说,根据您的SQL查询,如果折扣是60%,它并不意味着60%的折扣,但它可以享受40%的折扣。
我认为这不是你想要的,所以正确的查询应该是:
SELECT Cast(SUM(Quantity * UnitPrice * ((100-Discount)/100)) as varchar(50))
from Stock_Purchase_Details