我有兩個T-SQL標量函數,它們都對大量數據進行計算(花費大量時間)並返回一個值,例如, CalculateAllIncomes(EmployeeID)和CalculateAllExpenditures(EmployeeID)。如何避免在需要組合結果時多次調用T-SQL函數?
我運行調用這些並返回結果爲每個員工的SELECT語句。我還需要將每個員工的餘額計算爲AllIncomes-AllExpenditures。
我有一個函數爲getBalance(僱員)調用所述兩個上述功能並返回結果{CalculateAllIncomes(EmployeeID) - CalculateAllExpenditures(EmployeeID)}
。但是,如果我這樣做:
Select CalculateAllIncomes(EmployeeID), CalculateAllExpenditures(EmployeeID), GetBalance(EmployeeID) ....
函數CalcualteAllIncomes()和CalculateAllExpenditures被調用兩次(一次明確地,一次在GetBalance函數中),因此生成的查詢需要兩次。
我想找到一些更好的解決方案。我想:
select alculateAllIncomes(EmployeeID), AS Incomes, CalculateAllExpenditures
(EmployeeID) AS Expenditures, (Incomes - Expenditures) AS Balance....
但它拋出錯誤:
無效的列名收入和
無效的列名的支出。
我敢肯定,必須有一個簡單的解決方案,但我不能弄明白。出於某種原因,我似乎無法在SELECT子句中使用列別名。是這樣嗎?如果是這樣,在這種情況下可以採取什麼解決方法? 感謝您的任何建議。
你可以在你的客戶端代碼中進行組合嗎? – Paddy 2010-08-11 11:58:33
此選擇語句是在應用程序的不同位置多次使用的視圖的一部分。所以我認爲將它包含在視圖中是有意義的,這樣我就不必在不同的地方重寫相同的計算。畢竟我認爲這是Views的全部目的。 – Trex 2010-08-13 08:31:07