我有一张桌子:
组织机构 | 邮政编码 | 代码 | 价格
我想从该表中选择所有数据,并计算每个 PONumber 的代码价格总和,例如:
SELECT
tt1.ORG as 'Organization',
tt1.PONumber as 'PO Number',
tt1.Code as 'Code',
tt1.Price as 'Price',
'SumPrice' = FUNC001(tt1.PONumber)
FROM My_table as tt1
在此过程中,我使用函数 FUNC001(tt1.PONumber):
ALTER FUNCTION [dbo].[FUNC001] (@ponumber VARCHAR(MAX))
RETURNS DECIMAL AS BEGIN
DECLARE @p1 DECIMAL ;
SET @p1 = 0.0 ;
SELECT @p1 = @p1 + tt1.Price
FROM My_table as tt1
WHERE tt1.[PO number] = @ponumber
RETURN ROUND(@p1,2,1)
END
问题是:由于我的 SELECT 查询执行,此函数每次返回相同 PONumber 的价格总和,这需要很多时间。有没有办法为查询中的每个 PONumber 只执行一次此函数并为相同的 PONumber 应用返回值?我可以使用一些@parameter,并检查:如果 PONumber 更改 -> 执行函数,否则选择以前的值?