2010-11-15 22 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)