我有两个T-SQL标量函数,这两个执行计算对数据的大量资金(以时间"很多"),并返回一个值,例如CalculateAllIncomes(雇员)和CalculateAllExpenditures(雇员).
我运行一个select语句来调用这些并返回每个Employee的结果.我还需要为AllIncomes-AllExpenditures计算每个员工的平衡.
我有一个函数为getBalance(雇员)调用所述两个上述功能并返回结果{CalculateAllIncomes(EmployeeID) - CalculateAllExpenditures(EmployeeID)}.但如果我这样做:
Select CalculateAllIncomes(EmployeeID), CalculateAllExpenditures(EmployeeID), GetBalance(EmployeeID) .... 功能CalcualteAllIncomes()和CalculateAllExpenditures被调用两次(一次明确而一旦为getBalance funcion内),并因此产生的查询时间,只要它应该的两倍.
我想找一些更好的解决方案.我试过了:
select alculateAllIncomes(EmployeeID), AS Incomes, CalculateAllExpenditures
(EmployeeID) AS Expenditures, (Incomes - Expenditures) AS Balance....
Run Code Online (Sandbox Code Playgroud)
但它会引发错误:
无效的列名称收入和
列名支出无效.
我确信必须有一个简单的解决方案,但我无法弄明白.出于某种原因,似乎我不能在SELECT子句中使用列别名.是这样吗?如果是这样,在这种情况下可能有什么解决方法?谢谢你的任何建议.
t-sql ×1