用于复制包含循环引用的Excel计算的SQL Server代码

时间:2010-11-15 20:49:14

标签: sql-server sql-server-2005

有没有办法将带有循环引用的公式从Excel文件复制到SQL Server?我的客户使用Excel文件来计算销售价格。销售价格字段是(成本/ 1投影保证金))= 6.5224(1-.6)= 16.3060。成本中的一个数字是佣金,定义为SellingPrice乘以佣金率。

费用= 6.5224 预计保证金= 60% 佣金= 16.3060(售价)* .10(佣金率)= 1.6306(这是6.5224的一部分)

他们绕过Excel中的循环引用问题,因为Excel允许他们检查启用迭代计算选项并在100次后停止迭代。

这可以使用SQL Server 2005吗?

由于

3 个答案:

答案 0 :(得分:2)

这是一个业务问题,而不是IT问题,因此您需要一个业务解决方案,而不是IT解决方案。这听起来并不像是在为一个特别精明的客户工作。基本上,您将佣金重新计入成本并重新计算佣金100次。所以推销员根据他们的佣金赚取佣金?!?真的吗? : - )

我会试着说服他们分别计算成本和佣金。在具有良好会计实务的专业组织中,我已经工作过,这些成本通常被分解为运营和非运营或原材料成本,这应该可以提高他们对业务的理解。要在以后报告总成本,请添加佣金和原材料成本。没有循环循环和良好的会计报告。

在我工作的银行,这些费用通常称为成本(无佣金或费用),净成本(成本+佣金),然后是净成本(成本+佣金+费用)。根据商业模式,成本细分可能会非常有趣。

以下是您可能建议他们计算售价的两个合理选项。

选项1:如果您要计算保证金以排除佣金,那么

  

佣金前价格=成本+(成本*(1 - 预计保证金))

     

销售价格=佣金前的价格+(佣金前的价格*佣金)

选项2:如果您的客户坚持计算保证金以包含佣金(听起来他们可能想做),那么

  

成本价格=成本+(成本*佣金)

     

每单位利润或每单位贡献=成本价格*(1-Projected Margin)

     

销售价格=成本价格+每单位利润

这在会计术语中是明智的,也是使用SQL或任何其他软件工具实现的轻而易举的事。这也意味着当每个产品的预计利润率不同时,您的客户可以分析其销售额,以突出显示每单位成本和每单位利润。随着业务的发展,这种情况总会发生。

不要盲目接受电子表格中的计算。仔细考虑,不要害怕询问客户他们想要实现的目标。在被质疑之前,经常破坏的业务流程使其成为IT部门。不要害怕做好工作,有时候意味着挑战客户的要求,当它们没有意义时。

祝你好运!

答案 1 :(得分:0)

不,这是不可能的

mysql> select 2+a as a;
ERROR 1054 (42S22): Unknown column 'a' in 'field list'

sql表达式只能引用已存在的表达式。 你甚至不能写

mysql> select 2 as a, 2+a as b;
ERROR 1054 (42S22): Unknown column 'a' in 'field list'

查看数据库的方法是作为事务引擎,将数据从一个状态一步到另一个状态(运算符的组合不仅可以在标量值上运行,还可以在集合上运行)。

答案 2 :(得分:0)

虽然我同意@Sir Wobin的回答,如果你想写一些递归代码,你可以通过滥用Recursive Common Table Expressions来做到这一点:

with RecurseCalc as (
    select CAST(1.5 as float) as Value,1 as Iter
    union all
    select 2 * Value,1+Iter from RecurseCalc where Iter < 100
), FinalResult as (
    select top 1 Value from RecurseCalc order by Iter desc
)
select * from FinalResult option (maxrecursion 100)