SQL查询问题零折扣

时间:2015-12-16 17:11:37

标签: sql sql-server sql-server-2008

我使用以下查询来获得折扣后的总金额。

我的问题是当折扣等于零时,总金额变为零。

如何解决此问题?

SELECT  
    CAST(SUM(Quantity * UnitPrice * (Discount / 100)) AS varchar(50))  
FROM
    Stock_Purchase_Details

4 个答案:

答案 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