0

不明白为什么我不能得到正确的答案。我正在尝试计算净利润百分比,但除法部分被忽略了。希望真的很简单吗?

SUM(
    (dbo.K3_TradeTeam_Sales2.TotalSales - dbo.K3_TradeTeam_SalesReturn3.TotalCredits)
    ISNULL(dbo.K3_TradeTeam_Purch1.TotalPurchases, 0) / 
           dbo.K3_TradeTeam_Sales2.TotalSales
   ) AS NetMargin
4

3 回答 3

0

sql逻辑应该可以工作。您确定 TotalPurchases 不为空吗?因为这使它看起来像是忽略了 devide,但 devide 只返回 0。所以我正在做负零!

例子:

select SUM((200 - 100) - ISNULL(100, 0) / 10) AS NetMargin --returns 90
select SUM((200 - 100) - ISNULL(null, 0) / 10) AS NetMargin --return 100
于 2012-09-25T12:40:32.200 回答
0

要获得净利润,您可能需要这样的表达式,

(
    SUM(
            dbo.K3_TradeTeam_Sales2.TotalSales
        - 
            COALESCE(dbo.K3_TradeTeam_SalesReturn3.TotalCredits, 0.0)
        -
            COALESCE(dbo.K3_TradeTeam_Purch1.TotalPurchases, 0.0)
       )
/ 
    SUM(
            dbo.K3_TradeTeam_Sales2.TotalSales
       )
) AS NetMargin

但是,在不知道您的架构的情况下,我不能肯定地说。0.0当您有总销售额时,这也将失败。


我假设您想要每个房地产的净利润总和除以每个关系的总收入总和。这将为您提供所有关系的累积利润率。

于 2012-09-25T13:29:02.127 回答
0

当我无法使用数学公式时,我会临时更改选择以简单地查看每个字段的值以及计算。然后我可以手动进行计算,看看我如何得到我得到的结果,这几乎总是指向我的问题。

select 
    dbo.K3_TradeTeam_Sales2.TotalSales, 
    dbo.K3_TradeTeam_SalesReturn3.TotalCredits,
    ISNULL(dbo.K3_TradeTeam_Purch1.TotalPurchases, 0), 
    dbo.K3_TradeTeam_Sales2.TotalSales 
From...

我也从来没有在没有case语句的情况下进行除数来处理除数为0的问题。即使我认为它永远不会发生,我也经常看到它让人们不考虑某些事情(包括错误的数据输入)可能会在未来发生这种情况。

于 2012-09-25T13:45:29.447 回答