0

我有一张桌子:

组织机构 | 邮政编码 | 代码 | 价格

我想从该表中选择所有数据,并计算每个 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 更改 -> 执行函数,否则选择以前的值?

4

1 回答 1

1

试试这个::

    SELECT 
    tt1.ORG as 'Organization', 
    tt1.PONumber as 'PO Number',
    tt1.Code as 'Code',
    tt1.Price as 'Price',
SUM(ROUND(tt1.PricePrice,2,1) as 'SumPrice'

    FROM My_table as tt1 group by tt1.PONumber 
于 2012-07-11T10:04:38.953 回答