2010-11-15 35 views
3

有没有办法将具有循环引用的公式从Excel文件复制到SQL Server中?我的客户使用Excel文件来计算销售价格。销售价格字段是(成本/ 1-Projected Margin))= 6.5224(1-.6)= 16.3060。进入成本的数字之一是被定义为SellingPrice的佣金乘以佣金率。用于复制包含循环引用的Excel计算的SQL Server代码

成本= 6.5224 预计利润率= 60% 佣金= 16.3060(卖出价)* 1.10(佣金率)= 1.6306(也就是6.5224的一部分)

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

这可能使用SQL Server 2005吗?

感谢

回答

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

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

我会试着说服他们分别计算成本和佣金。在这些成本往往被分解为经营和非经营或原材料成本的专业组织中,具有良好会计实践的专业组织中,这应该会提高他们对业务的理解。稍后报告总成本,增加佣金和原材料成本。没有循环和良好的会计报告。在我工作过的银行中,这些成本通常被称为成本(无佣金或费用),净成本(成本+佣金),然后非常净成本(成本+佣金+费用)。取决于商业模式,成本分解可能会变得非常有趣。

这里有两个明智的选择,你可能会建议他们来计算销售价格。

选项1:如果你要计算保证金,以排除委员会随后

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

售价=之前价格+佣金(佣金前价格*委员会)

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

成本价格=成本+(成本*委员会)每单位或每单位贡献

利润=成本价×(1-预计保证金)

售价=成本价+每单位

这是会计的角度来看,用SQL或任何其他软件工具来实现不费吹灰之力合理利润。这也意味着,当每个产品的预计保证金不同时,您的客户可以通过分析销售额的方式来突出显示每单位成本和单位利润。这总是随着业务的增长而发生。

不要盲目接受电子表格中的计算。思考他们,不要害怕向客户询问他们想要达到的目标。经常被打破的业务流程使IT部门在受到质疑之前就已经达到了IT部门的水平。不要害怕做好工作,这有时意味着在客户的要求没有意义时提出挑战。

祝你好运!

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)